指针运算

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); 所以对数组取&操作 长度为一个数组的长度

上一篇下一篇

猜你喜欢

热点阅读