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

C語言 二級(jí)指針

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

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

image.png

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

1.二級(jí)指針的定義

二級(jí)指針的定義形式為:

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

例如:

    int **pm,**pn;

    定義兩個(gè)二級(jí)指針pm、pn。

2.二級(jí)指針的賦值

例如已經(jīng)定義二級(jí)指針pm,則對(duì)pm的賦值為:

    pm=&p/*p是一個(gè)普逾指針._*/

【例題】利用二級(jí)指針輸入、輸出變量的值

程序如下:

#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()語句對(duì)*q輸入,q中存放的是p的內(nèi)容,而指針p的內(nèi)容為變量a的地址,所以“*q”代表了a的地址。

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

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

程序如下:

#include 〈stdio.h〉

main()

{

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

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

    int i=O;

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

        puts(*p);

}

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

beijing

tianjin

hebei

shandong

hunan

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


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

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