位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 二級指針

提問人:劉團(tuán)圓發(fā)布時間:2020-12-02

    二級指針是指向指針的指針,指針在內(nèi)存中也有自己的存儲空間,指針的地址也可以存儲在另外一個指針中,這一指針稱為二級指針,如圖所示。

image.png

    從圖中可看出,指針p的內(nèi)存空間中存儲的是變量a的地址,而指針q中存儲的是指針p的存儲空間,可以認(rèn)為指針q指向指針p。q就是一個二級指針,也稱為指向指針的指針。

1.二級指針的定義

二級指針的定義形式為:

    類墊標(biāo)識符  **指針變通[, **指針變避2……];

例如:

    int **pm,**pn;

    定義兩個二級指針pm、pn。

2.二級指針的賦值

例如已經(jīng)定義二級指針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的內(nèi)容,而指針p的內(nèi)容為變量a的地址,所以“*q”代表了a的地址。

有時也可以讓二級指針指向二維數(shù)組,使二維數(shù)組的操作更為方便。

【例題】利用二級指針輸出字符串?dāng)?shù)組中的內(nèi)容

程序如下:

#include 〈stdio.h〉

main()

{

    char *name[5]={"fbeijing","tianjin","hebei","shandong","hunan"};

    char **p?name;       /*令二級指針指向二維數(shù)組數(shù)組名*/

    int i=O;

    for(i-0;i<5;i++,p++)     /*二級指針移動,不斷指向數(shù)組每一行*/ 

        puts(*p);

}

程序執(zhí)行時,輸出結(jié)果為:

beijing

tianjin

hebei

shandong

hunan

程序中,二級指針p執(zhí)行字符串?dāng)?shù)組的首地址,當(dāng)p+1時,移動一整行,執(zhí)行數(shù)組第二行的首地址,從而實現(xiàn)利用二級指針輸出各個字符串。


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部