1.只要有{ },大括号里就称作“块”,无论是函数里,语句,甚至是随便起一个地方。
2.每个块就相当于一个独立的平行宇宙,即使有多个块里有同名的变量,但其并不相同,并且块内的变量并不会对块外的同名变量造成影响。就像平行时空里同一个人,其行为并不会对其他平行时空的同名造成任何影响。
3.块外定义的变量在块内仍然有效,但如果块内有同名变量,则块内的本地变量会屏蔽块外的变量。
4.块内的变量只有在运行到块时存在,即本地变量的生存期是块。并且作用域也是块。
5.函数的定义不可嵌套。但函数的声明可以嵌套。
6.当声明一个函数时,如果函数原型不需要形参,要写成(void)。如果直接写成(),则编译器会根据调用该函数时的实参,来猜测形参类型,并且和函数定义时的形参类型比较,如果不一样,直接会导致形参错误,不会自动转换类型。
7.当浮点数保留几位小数时,根据后一位进行四舍五入。保留的后一位如果是5的话,分两种情况,5后面是0则不进位,若为非0则进位。
8.当scanf时,%c空格%d时,在终端用a回车1也是正确的。
9.C里面没有bool的头文件。
10.C语言的内存堆栈地址计数是从下往上计,变量的储存是从上往下储存。
11.数组地址:&a[0]=&a=a。 a表示数组首元素的地址,而&a表示数组的首地址。a+1表示数组第二个元素的地址,而&a+1是整个数组的地址往后移一位。
12.“Hello”是一个字符数组。这个数组的长度是6,但是字符串常量是5。sizeof是带\0,strlen不带\0。
13.\0代表的就是ascll码中序号为0的东西。而’空格‘代表ascll码中序号为32的东西。
14.strcpy会把被复制的字符串后面的\0也复制进去,这是strcpy函数的原因,strlen不算\0同时也是函数的原因。不能粗暴的说,\0是字符串的一部分,要分情况。
15.strcat会把首个字符串的\0抹掉再把后面的字符串接上去。
16.字符串比较用strcmp,且传入地址。而单个字符比较用==即可。
17.用%s进行输入输出时,都是遇到\0结束。且不读入回车。
18.当二维数组中,相邻两个相同元素看成一组,并且统计组数时,可以在遍历时将多个元素的组中的元素变成只有中间一个元素(例如扫码到一个#时,if看右边和下边是不是#,如果是,则让他们都为%),完成这步后,再重新遍历#,当有一个#时即可组数+1.
19.用完一次scanf后跟一个getchar清除缓冲区。
C语言杂乱随笔。
最新推荐文章于 2024-08-29 20:37:19 发布