关于指针,有两个要点:
1)指针中存储“地址”的,这一点大多数读者都知道!
2)指针中存储的“地址”是“捆绑”了一块内存单元的。
例:
int *p = &x; //p中存储了x的地址,该地址“捆绑”的单元大小为sizeof(int)个字节。
再如:
int (*q)[10]; //q中存储一个具有10个int型元素数组的首地址,该地址显然“捆绑”的是10*sizeof(int)个字节。
知道了“捆绑”单元的大小,不难知道p+1或q+1代表的地址值了。
上两例中p+1的值为:&x + sizeof(int)
而q+1的值为:数组的首地址 + 10*sizeof(int)
这些知识在《C语言与程序设计大学教程》一书中总结得非常好,以前我也迷糊:)我真的很感谢这本书,因此,向许多朋友推荐了。
1)指针中存储“地址”的,这一点大多数读者都知道!
2)指针中存储的“地址”是“捆绑”了一块内存单元的。
例:
int *p = &x; //p中存储了x的地址,该地址“捆绑”的单元大小为sizeof(int)个字节。
再如:
int (*q)[10]; //q中存储一个具有10个int型元素数组的首地址,该地址显然“捆绑”的是10*sizeof(int)个字节。
知道了“捆绑”单元的大小,不难知道p+1或q+1代表的地址值了。
上两例中p+1的值为:&x + sizeof(int)
而q+1的值为:数组的首地址 + 10*sizeof(int)
这些知识在《C语言与程序设计大学教程》一书中总结得非常好,以前我也迷糊:)我真的很感谢这本书,因此,向许多朋友推荐了。