C语言指针知识点
1.计算机内存中负数会以补码的方式存储,补码是负数二进制码的除符号位,按位取反,再加1;
例:1100 1101 0001 0101内存中数据,代表的数是
先减1,再取反,得到负数的二进制码,
是1011 0010 1110 1011,化成十进制是-13035;
2. 指针变量加一的理解;
指针变量加一,指针会指向下一个变量空间,注意的是指针所指空间会增加指类空间的字节个数。
3.int ar[10];
{&ar[0]取第一个变量地址,首地址;ar数组名代表整个数组,它的值是数组空间首地址;&ar取数组ar地址,既是首地址。},这三种情况的值是相同的,都是数组第一个空间地址,但注意代表的意义不同;
4.用数组定义(存放)的字符串可以修改,而指针定义的不可以修改。
5.大小端问题即是数据再内存中保存时,数据的高位保存在内存地址的大地址还是小地址的问题;
大小端和小大端其实都可以实现,或者被运用于计算机硬件制造中;
大多运用的时大小端,即数据高位保存在内存地址小的一端,如windows;
6.复杂指针的理解;
指针数组,数组指针,指针函数,函数指针;
Int (*p)[10] P的类型是int (*)[10]即数组指针;
P指向的类型int ()[10]即数组;
Int *(*(*fun)(int *))[10] 指针数组的函数指针;
Int (*(*func)[5])(int *)函数指针的指针数组;
Int (*(*func)(int *))[5];数组指针的函数指针;
Int *(*func(int *))[5];指针数组的函数;
(*((void(*p)()0))();将0转换成函数指针,指向的函数。(函数加参数括号中)。