1.指针
指针类型的字节大小与环境有关,当环境是32位时,其字节大小为4,环境为64位时大小则为8.
其作用在小白水平下多用来操作数组,因为int*类型进行++操作时会跳过四个字节,char*类型进行++操作跳过一个字节。
如图所示
int* pa的理解是这样的:
int* 表示指针里边装的是什么数据类型的地址;*pa表示pa是指针。
指针-指针的绝对值表示俩指针之间表示元素个数。
c语言标准规定:允许指向数组元素的指针与指向数组最后一个元素后边的内存作比较,但不允许与第一个元素前的地址做比较。
2.其他
用sizeof求长度的时候输出的形式最好是"%zu"。因为zu就是给sizeof准备的一种格式。
浮点数在内存中不能精准保存。
不完全初始化(扫雷棋盘):char outbrand[row][col]={'*'} ;,完全初始化还得用循环。
结构体大括号外边的是结构体变量,也可以直接声明,假如有个peo的结构体
那么变量声明为:stuct peo p1,p2,03……;
打印结构体中的结构体变量时方法为printf("%(需要的类型)",外结构体.内结构体.结构体变量名);
在一个输入循环中,可以一次性输入多个值
例:
for(i=0;i<10;i++)
{scanf("%d",&arr[i]);
}
可以直接输入 1 2 3 4 5 6 7 8 9 10
3.右移操作符
1)逻辑位移 :右边丢弃,左边填0
例:0010>>1=0001(有符号二进制)
1100>>1=0110(有符号二进制)
2).算术位移:左边用符号位填充,右边丢弃。
例子:0010>>>0001(有符号二进制)
1100>>>1=1110(有符号二进制)
4.调试
debug(调试用的):调试版本,包含调试信息。并且不做任何优化。
release(用户使用,不可调试):发布版本,进行过各种优化,使得程序在代码和运行速度上是最优的。
f9创造断点和取消断点。