首页 百科知识 指针变量指向的地址的内容

指针变量指向的地址的内容

时间:2022-10-03 百科知识 版权反馈
【摘要】:由于指针变量直接指向变量,所以称为 “单级间址”;而如果通过指向指针的指针变量来访问变量,则构成 “二级间址”,如图10-24所示。显然,*p是指针变量的定义形式,如果没有最前面的*,那么就是定义了一个指向字符数据的指针变量。现在它前面又有一个*号,表示指针变量p是指向一个字符指针型变量的。数组名name代表该指针数组的首地址。还可以设置一个指针变量p,使它指向指针数组元素。p就是指向指针型数据的指针变量。

如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。

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

图10-24

指向指针型数据的指针变量的定义如下:

char**p;

p前面有两个*号,相当于*(*p)。显然,*p是指针变量的定义形式,如果没有最前面的*,那么就是定义了一个指向字符数据的指针变量。现在它前面又有一个*号,表示指针变量p是指向一个字符指针型变量的。*p就是p所指向的另一个指针变量。

从图10-25可以看到,name是一个指针数组,它的每一个元素是一个指针型数据,其值为地址。name是一个数组,它的每一个元素都有相应的地址。数组名name代表该指针数组的首地址。name+1是name[1]的地址。name+1就是指向指针型数据的指针(地址)。还可以设置一个指针变量p,使它指向指针数组元素。p就是指向指针型数据的指针变量。

图10-25

如果有:

p=name+2;

printf("%o\n",*p);

printf("%s\n",*p);

则第一个printf函数语句输出name[2]的值 (它是一个地址),第二个printf函数语句以字符串形式 (%s)输出字符串 “Great Wall”。

【例10.36】使用指向指针的指针。

main()

{char*name[]={"Followme","BASIC","Great Wall","FORTRAN","Com-puterdesighn"};

char**p;

inti;

for(i=0;i<5;i++)

{p=name+i;

printf("%s\n",*p);

说明:p是指向指针的指针变量。

【例10.37】指针数组的元素指向数据。

main()

{staticinta[5]={1,3,5,7,9};

int*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};

int**p,i;

p=num;

for(i=0;i<5;i++)

{printf("%d\t",**p);p++;}

说明:指针数组的元素只能存放地址。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈