指针运算
2018-09-03 本文已影响0人
只为博军一笑
指针的类型与指针指向的类型明显不相等
指针的类型表示指针自身的类型; 指针指向类型表示指针指向数据(内存)的类型。
short *p = 0;
char **p = 0;
p++;
q++;
printf("%d -- %d\n", p, q);
在32位系统中结果是2,4;
p指向short类型,步进为2;
q指向char*类型,步进为4;
关于指针别想复杂了,其实就是一个普通变量而已
int a; //a是一个int类型的变量,它的值是一个整数
int *pa = &a; //pa 是一个int *类型的变量,它的值是一个int型变量的地址
int **ppa = &pa; //ppa是一个int **型的变量,它的值是一个int *型变量的地址
延伸:
数组取值 int a[10];
数组名代表数组首地址,假设a地址为0x28fe90
a + 1 地址为0x28fe90 + sizeof(int)
&a 地址为0x28fe90
&a + 1 地址为0x28fe90 + 10 * sizeof(int) + 1这个过程会把a看做 int[10] a(可以理解为int[10]类型的变量 a); 所以对数组取&操作 长度为一个数组的长度