大话2法宝宝:c语言的指针数组是怎么一回事?

来源:百度文库 编辑:高考问答 时间:2024/04/29 02:15:12
看这个声明:
char *c[5];
请问这个声明表示的是什么?

这是一个指针形的数组
其中
c[0].c[1],c[2],c[3],c[4]都是存储地址
*c[0].*c[1],*c[2],*c[3],*c[4]都是地址对应的字符变量

指针数组的意思就定义一个数组,该数组的每一个元素都是一个指针,每一个元素都可以用来存放地址。

你这样来看待
char a[10]
的a是这个数组的首地址,
a[0]就是它的第一个地址里面的值
所以也可以这样访问 *a
也就是a[n]和*(a+n)是等效的

而 char *a[10]
这个数组里面的值就看成一个地址
如果a[1]=20
*a[1]就是内存中地址为 20的单元存的数据

跟char *a一个道理,.

C[5]是一个数组 而这个数组的每个元素就是一个指针变量 是指向一个char型变量的地址
如果char (*C)[5] 则表示数组的指针

一句话 C[5]是一个数组 而这个数组的每个元素就是一个指针变量 是指向一个char型变量的地址