数组的元素值为指针则是指针数组

发布时间:2022年07月06日 阅读:1589 次

微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; white-space: normal; background-color: rgb(255, 255, 255); line-height: 2;">一个数组的元素值为指针则是指针数组。 指针数组是一组有序的指针的集合。 指针数组的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量

微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; white-space: normal; background-color: rgb(255, 255, 255); line-height: 2;">如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。 

在前面已经介绍过,通过指针访问变量称为间接访问。由于指针变量直接指向变量,所以称为“单级间址”。而如果通过指向指针的指针变量来访问变量则构成“二级间址”。

数组的元素值为指针则是指针数组

1、设:char *s[]={"red","blue","green"};

则s、s[0]、s[1]、s[2]的含义各是什么

(1)s是一个指针数组(由指针组成的数组)。s是一个二级指针(常量),存储了这个数组的首地址因此,s++或s--均是错误的。但s+1是有意义的,为s[1]的首地址,即*(s+1)就是s[1]。

(2)s[0]、s[1]、s[2]是数组s的三个元素,均为指针变量,分别存储字符串"red"、"blue"、"green"的首地址。**(s+1)即*s[1],其值为'b'。

2、"char *a[3];"与"char (*a)[3];"有何差别?

(1)"char *a[3];"定义的是一个指针数组,为二级指针常量,元素为指针变量(存储char类型数据的地址)。如:

         char x=1,y=2,z=3,*a[3]={&x,&y,&z};


这时**a就是x的值,**(a+1)就是y的值,**(a+2)就是z的值。

(2)"char (*a)[3];"定义的是一个指向一维数组的指针变量。如:

         char p[]={1,2,3,4,5,6,7,8,9},(*a)[3]=p;


 这时a指向{1,2,3}的首地址,a+1指向{4,5,6}的首地址,a+2指向{7,8,9}的首地址。因此有:**a的值为1、*(*(a+1)+2)的值为6。


Tag:数组.元素值.指针.指针数组
相关文章
发表评论

发表评论: