位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 二级指针

提问人:刘团圆发布时间:2020-12-02

    二级指针是指向指针的指针,指针在内存中也有自己的存储空间,指针的地址也可以存储在另外一个指针中,这一指针称为二级指针,如图所示。

image.png

    从图中可看出,指针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时,移动一整行,执行数组第二行的首地址,从而实现利用二级指针输出各个字符串。


继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部