- 按位右移>>
之前比较熟悉无符号数右移,比如b101 >> 2 = b1,那么有符号数右移呢?
-5 >> 2 即 b11111011 >> 2 = b11111110 = 0
有符号数右移左边的二进制位补1,无符号数右移是左边的二进制位补0。
2. 按位与&和逻辑与&&的区别
逻辑与是将要运算的两个数看作一个整体,而这个整体如果是0,则该数被定义成逻辑假(0);如果该数不为0(不管是正的还是负的),则被定义成逻辑真。
3 && -5 = 1
- 数组的空间必须是连续的,这就造成数组在内存中分配空间时必须找到一块连续的内存空间;所以数组不可能定义的太大,因为内存中不可能有那么多大的连续的内存空间。
- 结构体变量名代表的是整个结构体变量,而不像数组名代表地址。
- 在C语言中,定义局部变量时如果未初始化,则值是随机的,为什么?
定义局部变量其实是在栈中通过移动栈指针,来提供一个内存空间与这个局部变量名绑定,而栈的内存空间是反复使用的,即上次用完没清零的。 - 堆内存申请可选择的三个函数:
malloc calloc realloc



