1、数据类型基本数据类型:整形:int(4个字节,%d)、long int(8个字节 %ld)、short int(2个字节)、unsigne int、signed int(4个字节);浮点型:float(4个字节 %f)、double(8个字节 %f);字符型:char(1个字节 %c %d)。构造类型:数组:只能由同一种数据类型组成;eg:int ages[3];结构体(struct):可以由不同类型的数据组成。枚举类型(enum):当一个变量祝允许有几个固定的取值时。
2、关键字与标识符关键字:关键字是属于系统自带的,是具有特殊含义的符号。标识符:是程序中自定义的一些符号和名称。3、算数运算,逻辑运算,位运算分类算数运算:+ - * / % ++ --逻辑运算:与&& 或|| 非!位运算:与& 或| 异或^ 按位取反~ 左移<< 右移 >>优先级问题:算数运算>关系运算>逻辑运算
4、进制问题二进制:0B开头 eg:0B11 代表11为二进制八进制:0开头 eg:011 代表11为八进制十六进制:0x开头 eg:0x11代表11为十六进制
5、代码段作用:主要是为了能够快速回收不再使用的变量内存。
6、scanf函数注意点
1> scanf函数只接收变量的地址;
2> scanf函数是一个阻塞式的函数,等待用户输入;
3> 一次性输入多个值,并且以某个符号隔开,则用户输入时必须以该符号隔开;
4> 如果scnaf参数之间分隔符是空格时,输入时可以用空格、tab和回车键代替;
5> scanf函数中不能写\n换行。例如:scanf("%d\n",&a);(错误)。
7、const修饰变量:表示变量的值是常量,不可以修改。
8、sizeof的用法sizeof是用来计算一个变量、常量或数据类型所占用的内存字节数。strlen:用来计算字符串的长度,不包括\0,如果遇到\0则停止计算。
9、if与switch的区别if:if属于判断语句,每次只有一个大括号内代码体被执行。switch:1>根据表达式的值将流程转化到某个case。2>如果case后没有break,则会一直执行下去,直到遇到break为止 。
10、循环结构for循环:首先进行对条件进行判断,然后再循环,处理能力最强。while循环:首先进行对条件进行判断,然后再循环。do..while循环:首先循环一次,然后再对条件进行判断。
11、break与continue的作用break:退出循环。continue:退出本次循环,进入下次循环。
12、++a 和a++的区别
例如:
int a = 10;
int b = ++a;
++a 的意思是先对a 执行+1操作,再将a的值赋值给b。因此最后a、b的值都是11
int a = 10;
int b = a++;
a++ 的意思是先将a 的值拷贝出来一份,然后对a执行+1操作,于是a变成了11,但是拷贝出来的值还是10,a++运算完毕后,再将拷贝出来的值10赋值给了b,所以最后变量b的值是10,变量a 的值是11。同样对于 *(p++)和*(++p)的区别*(p++):先取*P的值,然后再p加1*(++p):先p加1,然后再取*p
13、函数声明与定义的区别声明:声明存在某个函数。定义:定义具体的函数体区别:有无函数体
14、数组与指针1>指针可以用来访问数组元素,eg:p[i],*(p+i)2>指针加1代表访问下一个数组元素,1的具体字节数根据指针类型来判断。
15、数组与函数的使用1>当数组作为函数参数使用时,数组元素个数可以省略2>当数组地址传递给函数时,数组元素值的更改会影响到外面数组元素值的更改(地址传递)3>当使用数组值传递时,数组元素值的更改不会影响到外面数组元素值的更改(值传递)
16、单引号'' 和双引号""区别:
'' :单引号只能扩住单字节的 字符 (ASCII表中都是单字节)。
"" :双引号扩住的是 字符串。
17、字符串的定义以及strlen的使用定义:字符串以字符数组组成,且字符串的最后一位是\0;strlen:用来计算字符串的长度,不包括\0,如果遇到\0则停止计算。
18、printf 函数打印字符串的原理
printf函数中使用name2作为参数, 这个数组名其实就是传递了数组name2的地址, printf("%s",a)这个函数就是从提供的地址 开始输出字符, 一直到\0结束输出. 所以,如果一个字符串不以'\0'结束,那么就会一直打印,直到遇到一个'\0'为止,如果打印 到未被赋值的内存区域,就会打印出乱码。
19、字符串与指针利用指针定义的字符串属于常量,不可进行修改。利用数组定义的字符串属于变量,可以修改。
20、结构体与函数、指针的关系结构体与函数:1>如果结构体定义在函数内部,则作用域从定义的那一行开始,到函数结束,类似局部变量。2>如果结构体定义在函数外部,则作用域从定义的那一行开始,一直到程序结束。结构体与指针的关系:有3种方式可以访问结构体变量:1>stu.age2>(*p).age3>p->age
21、预处理指令分类:宏定义、条件编译、文件包含宏定义: 1>宏定义是值将某些字符串替换成为常量或运算符,减少了程序代码量。2>宏定义分类带参数的宏定义和不带参数的宏定义。3>在定义带参数的宏定义时,一定要将每个变量名用小括号括起来条件编译: 1>符合某些条件时,再将此代码段进行编译,而且只编译宏定义的语句。2>只有编译的代码才占用内存,没有进行编译的代码不占用内存。3>有了条件编译,必须加#endif文件包含:可以和宏定义相结合,来防止文件重复包含。
22、typedef用法:#typedef 类型 别名 ;作用:为某个类型定义别名。好处:1>可以减少代码量。2>可以减少工作量。
23、static与extern对函数,全局变量,局部变量的作用对函数作用:static:说明此函数不能被外部文件访问。extern:说明此函数可以被外部文件访问。对全部变量作用:static:说明此变量不能被外部文件访问 。extern:说明此变量可以被外部文件访问。对局部变量作用:static:1>会延长变量周期,不会随着函数被毁而此变量消失。2>延长变量作用域。
24、交换a和b两个变量的值
方法1:借助第三变量;
方法2:a=b-a;b=b-a;a=a+b;
方法3:位运算。
C基础——C语言总结
最新推荐文章于 2021-02-24 10:38:09 发布