什么是指针数组?

来源:百度知道 编辑:UC知道 时间:2024/06/20 05:11:21
什么是指针数组?

同志们他说的是指针数组不是数组指针。
指针数组就是说是一个数组,数组中的每一个成员是一个指针。举例如下:
char *a[5]={"tan","li","cheng","fang","zheng"};
定义指针数组a,存放姓名,a有5个成员,即a[5]是包含5个指针元素的指针数组,5个指针中每个的值是该字符串的首地址,也就是说
a[0]=字符't'的地址
a[1]=字符'l'的地址
a[2]=字符'c'的地址
a[3]=字符'f'的地址
a[4]=字符'z'的地址
为何要这样?因为各个名字是字符串不是单个字符,也就是说它相当于二维数组
tan
li
cheng
fang
zheng
也就是相当于有行有列,所以要找到数组中的某一个字符就要先找到所在的行即a[i],这里a[i]就是个指针指向每行的第一个字符的地址,*(a[i]+j)就是第i+1行第j+1个元素。也就是说
char *a[5]={"tan","li","cheng","fang","zheng"};
等价于定义
char a[5][6]={"tan","li","cheng","fang","zheng"};
只是对于字符串,函数strncpy,strcpy,strcmp,strlen,strcat,strstr,strchr的参数都是指针变量都是一个指向字符串首字符的地址的指针,故用指针数组表示一个二维数组更方便形象,有些数据结构复杂,用指针数组来指向它们,当要改变数据的顺序时只要改变指向它们的指针的顺序不必改变数据本身,这样可以简化问题。指针是个好东西,是c语言的精华。你只要好好看《谭浩强的c程序设