tips
1. sizeof的返回类型时size_t。size_t就是为sizeof量身定做的,size_t就是unsigned int
2. strlen碰到\0会停下来,而sizeof则不会,也将其算作一个字符
3. 要注意这么两对东西:
scanf()与gets(): \0 , \n , 空格
sizeof()与strlen(): \0 , 转义字符
4. strlen碰到\0就会停下来,而sizeof就没有停下来这一说法
5.
sizeof 只关注占用内存空间的大小,单位是字节,不关心内存中存放的是什么
sizeof 是操作符
strlen是求字符串长度的,统计的是\0之前出现的字符个数,一定要找到\0才算结束,所以可能存在越界访问的
strlen是库函数
6. sizeof(数组名),数组名表示整个数组。计算的是整个数组的大小,单位是字节。&数组名,数组名表示整个数组。取出的是整个数组的地址。除此之外,所有的数组名都是数组首元素的地址
7. 对于大小端字节序存储,不要哪壶不开提哪壶,它仅仅只是大于一个字节的数据在内存当中临时存储的“各肢解部分”的顺序问题,注意:是以字节为基本单位。但是有可能会影响指针的解引用操作.但是无论是大端字节序存储还是小端字节序存储,归根到底都是暂时存储在内存当中,你用指针解引用访问时可以有时访问比较细致的话需要注意,但是当数据真正又被起用时(如%x打印数据),一切都要恢复正常的字节序
8. 将二维数组以矩阵形式看待或者在内存当中线性存储的形式来看待都是没有问题的
9. %p打印地址。%x打印是打印十六进制的整数
10. sizeof计算大小时是根据类型推断的,不会真实去访问空间的,压根就不会到空间里面去看,不会形成什么越界访问等等,而且,sizeof括号内部的表达式是不会影响外面的,其实是不参与运算的,不会实操一遍
11.
12. C语言中,表达式有2个属性:如:2+3,值属性:5;类型属性:int
13. 两个指针相减为两者之间的元素个数
14.
15.
16. 比如说scanf输入字符串的时候,你输入1,但是编译器不会把它当作数字1来对待,会把它当作字符1来对待
17. 字符其实在电脑里面存的是ACSII码,电脑才不认识什么字符呢
18. 客观外在的数与电脑里面的二进制补码在运算上吻合,但两者在数值上不一定吻合,将补码转化为原码才与客观外在的数值吻合(一个例子就是%d打印)
19. 要得到一个数n进制形式下的最后一位,就把该数%n,要得到丢去最后一位的那个形式,就把该数/n
20. 关于原码补码新的认识:
21. ++与--操作符肯定是把我自己永久性地改了,是有副作用的
练习1
附:
练习2
附:
练习三
附:
练习4
附:
练习5
附:
练习六
附:
练习七
附:
练习8
附:
练习9
附:
练习10
附:
练习11
附:
练习12
附:
练习13
附:
练习14
附:
练习15
附:
练习16
附: