一、C语言的历史背景
1972年,贝尔实验室,Dennis Ritchie,为B语言增加了数据类型,并做了大量修改,使之在功能、性能和易用性方面,取得了长足进步。这就是C语言! 1973年, Dennis Ritchie用C重写了Unix内核 1978年,不朽名著《The C Programming Language》正式出版。C从贝尔实验室走向世界 1989年,美国国家标准化协会,ANSI C89 1999年,国际标准化组织,ISO C99 2011年,国际标准化组织,ISO C11
二、C程序的开发步骤
1、编辑源代码 C程序文件类型 源文件(.c后缀) hello.c 头文件(.h后缀) stdio.h
C语言的注释风格 从/开始,到/结束,中间是注释,无行数限制 a /* b c d */ e f 不能嵌套注释:/我/是大/神/ 从//开始,到本行结束,单行注释 a // b c d // e f 可以嵌套注释:我是大神
#include指令:包含头文件 头文件扩展 #include <xxx.h> 先让gcc去到-I指定的目录去找,再找系统目录 一旦找到将头文件内容包含拷贝到hello.c中 #include “xxx.h” 先找-I目录,再找当前目录,最后找系统目录 头文件的系统目录 /usr/include /usr/local/include /usr/lib/gcc/i686-linux-gnu/4.6.3/include
主函数main原型 int main(void) { 执行语句1; 执行语句2; … 执行语句N; … return 0; //成功 或者 return 非0;//异常 }
2、编译预处理 3、将源预处理的结果编译为汇编代码 4、将汇编代码汇编为目标模块 5、将目标模块和库链接为可执行程序 6、将可执行程序加载到内存形成进程映像 7、处理器执行进程映像中指令
三、gcc的常用选项
-o:指定输出文件 -E:编译预处理 gcc -E hello.c -o hello.i -S:编译产生汇编文件 gcc -S hello.i –o hello.s -c:汇编产生目标模块 gcc -c hello.s –o hello.o -l:指定链接库 gcc hello.o –o hello
暂时不用 -std=C89/C99:指定语言标准 -Wall:产生尽可能多的警告 -g:生成调试信息 -I:指定头文件搜索目录 -L:指定库文件搜索目录 -O1/O2/O3:指定优化等级
变量相关概念
回顾内存RAM功能和特点
字节(Byte):计算机将内存分成一格一格,每一格用来存储一个数字,每一格对应的专业术语叫字节
地址(Address):计算机给内存中的每个字节都指定一个唯一的编号,编号从0开始,后续字节编号依次加1
存储区(Buffer):计算机将1字节或者多个连续的字节形成的一个存储单元简称存储区,又称缓冲区
首地址(Base Address):又称起始地址,存储区中第一个字节的地址用来当存储区的首地址
原则:访问内存前先分配
四、常量与变量
在程序执行过程中,其值***不发生改变***的量称为常量 直接常量(字面值) 整型量:10,10U,10L,10LL,012,0xA 实型量:0.12,0.12F,1.2E-1 字符量:‘A’,’\n’ 字符串:“Hello, World !\n” 标识符 标识变量名、数组名、函数名、类型名的有效字符序列 符号常量 符号化的常量,如宏定义、枚举元素等
在程序执行过程中,其值**可以改变的量称为变量 定义变量分配内存的语法:数据类型 变量名 = 初始值; 例如:int a = 520; 变量在内存中占据一定的存储单元,其内容可变 变量在使用前,必先定义其类型,且只能定义一次 欲使变量拥有确定的值,必为其赋值 定义变量的同时赋予初值叫做初始化 变量名必须是合法的标识符 字母或下划线开头 包含字母、下划线和数字 不能与关键字冲突 大小写敏感
变量的四要素: 例如:int a = 10, b = 20; 名称 叫什么? 类型 是什么? 值 存什么? 地址 在哪里?
五、C语言的编程风格
1、单条语句可写在任意多行内 2、必要的空格令代码更加清晰 3、严格的缩进令代码层次分明 4、适度的空行划分出逻辑单元 5、统一用驼峰或者下划线命名 6、代码尽量在屏幕左侧2/3 7、右侧1/3留白
六、两个常用函数
printf (“格式字符串”, …); 格式化输出,向显示器打印输出信息 参考代码:var_printf.c
scanf (“格式字符串”, 地址表); 格式化输入,从键盘上捕获输入的数据并保存到变量中 参考代码:scanf.c
七、基本数据类型
数据类型功能:gcc预算将来分配内存大小 例如:int 分配4字节内存 int a = 520; char 分配1字节内存 char a = 23;
12个基本数据类型如表
sizeof关键字
sizeof (参数); 计算内存的大小,以字节为单位 参数可以是类型、变量或表达式 不计算参数的值,只关注其类型 参考代码:sizeof.c
详解基本数据类型之字符类型
字符常量 用单引号括起来表示,例如:‘A’ 底层存储的是整数,即字符的ASCII码 ‘d’ - ‘a’ = 本质是100-97=3
字符变量 (signed) char/unsigned char 1字节 printf/scanf格式化占位符:%c或%hhd
ASCII编码
American Standard Code for Information Interchange,美国信息交换标准代码 1967年首次发表,1986年最后一次修订 包括128个字符,其中: 33个控制字符多数已废弃不用 95个可显示字符包括26个基本拉丁字母大小写、10个阿拉伯数字、32个标点及数学符号、1个空格 扩展版本EASCII增加了部分欧州语言字符 无法涵盖所有语言字符,逐渐被Unicode编码取代
常用控制字符
常用可显示字符
转义字符
|