C語言 二級(jí)指針
二級(jí)指針是指向指針的指針,指針在內(nèi)存中也有自己的存儲(chǔ)空間,指針的地址也可以存儲(chǔ)在另外一個(gè)指針中,這一指針稱為二級(jí)指針,如圖所示。
從圖中可看出,指針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è)字符串。
點(diǎn)擊加載更多評(píng)論>>