------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. C语言程序
C语言的源程序是.c文件
C语言程序的构成:
- 由函数构成,每个函数实现了一个或多个功能
- 在程序中,只有一个主函数(主函数被系统调用)
- 函数只有被调用的时候才执行
- 如果没有主函数,程序无法运行
2. C语言有32个关键字
数据类型关键字
A:基本数据类型关键字:void int char float double
B:类型修饰符关键字:short long signed unsigned
C:复杂类型关键字:struct union enum typedef sizeof
D:存储类型关键字:auto static register extern const volatile
流程控制关键字
A:跳转结构:return break continue goto(一般不用)
B:分支结构:if else switch case default
D:循环结构:do while for
3. 标示符
命名规则:
- 只能由字母、数字、下划线或$符号构成
- 不能由数字开头
- 不能和关键字重名
- 区分大小写
单行注释 //
多行注释 /* */
注释使用注意:
单行注释可以嵌套多行注释,但必须在同一行(无意义)
多行注释可以嵌套单行注释
多行注释不能嵌套多行注释
5. C语言中数据类型
a. 基本数据类型
整型:短整型(short) 长整型(long) 整型(int)
字符型 (char)
实型:单精度型(float) 双精度型(double)
b. 构造类型
数组、结构体(struct)、共用型(union)、枚举类型(enum)
c.指针类型
d.空类型
e.定义类型 (typedef)
6. 数据类型的内存占用
在64位机器下:
char 1个字节 int 4个字节 float 4个字节 double 8个字节 short 2个字节 long 8个字节 long long 8个字节 void* 8个字节
7. 不同数据类型的常量表达式
a.整型常量:
10进制
8进制 以0开头 eg:045
2进制 以0b开头 eg:0b1000111101
16进制 以0x开头 eg: 0x001FFA801B
b. 实型常量
单精度常量 以f结尾 eg:2.3f
双精度常量 默认是双精度常量 eg: 2.3
c. 字符型常量
字符型常量 用单引号括起来的字符 eg: 'a'
d. 字符串常量
字符串常量 用双引号括起来,可以使字符、数字、符号 eg: "abc" "gshf&"
8. 变量
变量的两要素:变量类型 变量名
变量分类:全局变量 局部变量
变量的初始化
定义的同时初始化: int a = 10;
先定义变量后初始化: int b; b = 2;
使用变量给变量初始化: int c=b; //用b的值给c初始化
给变量连续初始化:int d, e, f; d=e=f=100;
变量的作用域:
局部变量(内部变量):在函数内或代码块内部定义的变量,作用域仅限函数内部或代码块内。
全局变量: 在函数外部定义的变量,从定义的位置开始,到文件末尾结束,在同一文件的不同函数中都可以使用。
注意:在代码块内部可以定义和外部同名的变量,块内部会暂时屏蔽块外部同名的变量。
变量为什么区分类型?
为了更合理的分配内存,不同数据类型需要的存储空间可能不同
数据的存储格式不一样,比如 int 4个字节,float 4个字节
不同数据类型的运算方式可能不同
9. printf函数
调用格式:printf("格式控制字符串",输出列表);
格式控制符说明:
%d: 输出有符号10进制整数,正数符号不输出
%c:输出一个字符
%f:输出一个实数(包括单精度、双精度、长双精度),以小数形式输出。实数部分全部输出,float型小数部分输出6位
%s:输出字符串
%m.n: 指定数据宽度和小数位数 eg:%7.2f 输出数据占7列(小数点占1列),包括两位小数
%.n: 指定小数位n位
%0:以8进制形式输出
%:x:以16进制形式输出
%p:输出变量地址
%f输出精度问题:
%f输出数据时,float类型精度是小数点后6位,有效数字是7位
%f输出数据时,double类型精度是小数点后6位,有效数字是15位
printf函数使用注意事项:
域宽问题
%md: m是数字,可以为正也可以为负,如果要输出的数大于域宽m,按实际位数输出;小于m按实际位数输出。
%0md:位数小于域宽时,补0
10. scanf函数(阻塞式函数)
调用格式: scanf("格式控制符",输入项地址列表);
阻塞式函数执行后会等待用户一直输入,如果用户不输入任何内容,它会一直等待。
scanf函数使用注意事项:
接收单个变量时在输入值之前,输入的空格,回车、tab都会被忽略.
scanf函数在遇到回车时会结束执行
输入数值时,在两个数值之间需要插入空格或回车隔开,输入完第一个数,输入空格、回车。tab都会被忽略
‘*’的使用,%*d,跳过一个整数,%*c,跳过一个字符
scanf运行原理:
当用户输入内容后,这些内容会被存到scanf的输入缓冲区中,格式控制符会根据格式控制字符的要求,从输入缓冲区依次取出相应内容存到变量中,如果格式不一致,不给变量赋值。如果缓冲区还有内容,不会提示我们再输入。
解决混合型输入问题的方法:
a. 如果整型和字符型混合,加上','
eg: scanf("%d,%c,%d",&a,&ch,&b);
b. 每个变量写依次scanf时,我们要每次回车依次时
scanf("%d",&a);
scanf("%c",&ch); //吸收回车字符
scanf("%d",&ch);
scanf("%d",&b);