二级指针是指向指针的指针,指针在内存中也有自己的存储空间,指针的地址也可以存储在另外一个指针中,这一指针称为二级指针,如图所示。
从图中可看出,指针p的内存空间中存储的是变量a的地址,而指针q中存储的是指针p的存储空间,可以认为指针q指向指针p。q就是一个二级指针,也称为指向指针的指针。
1.二级指针的定义
二级指针的定义形式为:
类垫标识符 **指针变通[, **指针变避2……];
例如:
int **pm,**pn;
定义两个二级指针pm、pn。
2.二级指针的赋值
例如已经定义二级指针pm,则对pm的赋值为:
pm=&p/*p是一个普逾指针._*/
【例题】利用二级指针输入、输出变量的值
程序如下:
#include <stdio.h>
main()
{
int a;
int *p;
int **q;
p=&a;
q=&p;
scanf("%d",*q);
printf("%d %d %d\n",a,*p,**q); /* 以不同形式输出变逛 a 的值 */
}
程序中scanf()语句对*q输入,q中存放的是p的内容,而指针p的内容为变量a的地址,所以“*q”代表了a的地址。
有时也可以让二级指针指向二维数组,使二维数组的操作更为方便。
【例题】利用二级指针输出字符串数组中的内容
程序如下:
#include 〈stdio.h〉
main()
{
char *name[5]={"fbeijing","tianjin","hebei","shandong","hunan"};
char **p«name; /*令二级指针指向二维数组数组名*/
int i=O;
for(i-0;i<5;i++,p++) /*二级指针移动,不断指向数组每一行*/
puts(*p);
}
程序执行时,输出结果为:
beijing
tianjin
hebei
shandong
hunan
程序中,二级指针p执行字符串数组的首地址,当p+1时,移动一整行,执行数组第二行的首地址,从而实现利用二级指针输出各个字符串。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>