最近要期末了,要考c语言了,在复习过程中顺便把我认为易错的写出来,所以知识点可能不会包含的很全面,都是些我自我感觉容易错的哈哈,这部分先写下基本的知识点
- 读程序都从main函数入口,然后从上往下执行,(遇到循环执行循环,遇到函数再跳到函数执行),有且只有一个main函数
- c语言程序是由一个或多个函数组成
- .c -> .obj -> .exe , 编译->链接->运行
- 合法的标识符-数字、字母、下划线(记死),其中数字不能写在第一个
- c语言只有八进制、十进制、十六进制,无二进制,但是运行时会转化为二进制
- 算法可以没有输入,但一定要有输出
- 八进制0开头, 十六进制0x开头
- 2.1e-1 = 2.1*10-1次方 ,口诀:e前e后必有数,e后必为整数
- 关于’ / ‘ ,3/2=1, 但是3/2.0=1.5 ’/‘会根据两边的类型来得出结果
- int a =2;a*=2+3;结果a=10,运行时会先计算2+3
- a++先用再加,++a先加再用
- a =(2,3,4)的值为4,结果是最右边表达式的数值
- 赋值运算符(=)左边必定是变量,不能是表达式
- ’A'是字符,占一个字节,“A”是字符串,占两个字节
- 字符可以进行算数运算,例如‘0’-0=48,‘A’+32=‘a’(大小写一般相差32)
- 转义字符:1.一般转义字符:‘\n','\0','\'','\\' ,'\t' 2.八进制转义字符:’\xxx',ag:'\142',(\后面最多为三位), 3.十六进制转义字符:'\xoo', ag:'\x4d'
- %o八进制 %#o 带前导的八进制(ag:第一个11 第二个011)
- %x十六进制 %#x 带前导的十六进制(ag:第一个11 第二个0x11)
- printf("%2d",123)结果为123,printf(”%5d“,123)结果为 123前面两个空格,%xd中x表示整个数要有几位
- pritnf(”%3.1“,2.16)结果为2.2,小数点算一位,.1表示小数后面一位
- 非0表示真,0表示假
- 2<1<4,结果是对的,2<1得到0(假的),0<4,所以结果为真
- 优先级别 !> && > ||
- &&的短路,int a=0;b=2;(a&&b++),结果b不会被加一,因为a已经判断是假的了,所以不会执行后面的语句
- switch(表达式),表达式只能是整型或字符串
- switch语句有break和没有break的区别,没有break则只要有一个case匹配其他的都要执行(包括default)
- *p++ 取当前值,再移动地址
- 数组个数一定是常量而不是变量,int a[5],int a[1+2]都i是合法的,而int x=1;int a[x]是非法的
- 对所有元素都赋初值后,二维数组的行数可以省略,例如int arr[][2]={1,2,3,4,5,6}
- int a[10],a是第一个元素的地址,即a[0], a是常量指针,因此不可以进行加减和自增运算,但是指针型常量经常会用来加减,是可以的,所以就是不能进行自增减而已,例如a++是非法的,(a+1)是合法的,代表首地址后移一位
- a和&a,int a[10],a和&a的值是一样的,但是代表的含义不一样,a代表数组首元素的地址,&a代表数组的地址, 所以a+1是代表数组第二个元素,地址会往后移动4个字节(int为4个字节),而&a+1是代表第二个数组,地址会往后移动 元素个数*4 个字节,是跳过数组所有元素
- int a[2][2], a+1代表跳一行,a[0]代表第1行元素,a[0]+1代表跳一列,是第一行第二个元素
- a[2]=*(a+2), a[2][1]=*(a[2]+1), a[1][1]=*(*(a+1)+1),int a[][2]=int (*a)[2](作为函数形参时要用这两种形式)
- puts会输出字符串’\0'前的所有字符,并自动换行
- sizeof和strlen的区别,sizeof计算的是占用空间的大小,而strlen计算的是字符的个数
- strlen是计算字符串从开始到‘\0'之前的所有,不包括’\0',(字符串中是自带'\0'的,只是没有显示出来),所以如果char str[]={"abc\0df},结果是3个
- 对字符串操作记得要用那几个函数,strcmp(比较大小),strcpy(a,b)(将b内容拷贝到a),strcat(拼接两个字符串,接到‘\0'后面)
-
下面是c语言的运算符优先级
优先级 运算符 结合性 1、() [] -> . (从左到右) 2、 ! +(正) -(负) ~ ++ -- (从右向左) 3、 * / % (从左向右) 4、 +(加) -(减) (从左向右) 5、 << >> >>> (从左向右) 6、 < <= > >= (从左向右) 7、 == != (从左向右) 8、 &(按位与) (从左向右) 9、 ^ (从左向右) 10、 | (从左向右) 11、 && (从左向右) 12、 || (从左向右) 13、 ?: (从右向左) 14、 = += -= *= /= %= &= |= ^= ~= <<= >>= >>> (从右向左)