您好,登錄后才能下訂單哦!
1.1應(yīng)用場(chǎng)景
(1)二重指針編程中多數(shù)是和指針數(shù)組結(jié)合起來用
int **p1;
int *p2[5];
p1=p2;
(2)有時(shí)在函數(shù)傳參時(shí)通過函數(shù)內(nèi)部改變外部的一個(gè)指針變量,會(huì)以二重指針的方式把這個(gè)外部指針變量的地址傳進(jìn)去。
void func(int **p)
{
*p = (int *)0x22222222;
}
int main(void)
{
int a=10;
int *p3=&a;
printf("change before=%p.\n.",p);
func(&p3);
printf("change after=%p.\n.",p);
}
在內(nèi)存上和一維數(shù)組的存儲(chǔ)方式并無差別,只是管理差異。
//指向二維數(shù)組的數(shù)組名
int a[2][3]; //下標(biāo)形式二維數(shù)組
int b=0;
int (*p4)[3]; //數(shù)組指針,指針指向一個(gè)數(shù)組,數(shù)組有3個(gè)int類型元素
p4=a; //等同于p=&a[0],a對(duì)于第一維相當(dāng)于首元素首地址,第一維的首元素就是第二維的數(shù)組名,所以類型相匹配。
printf("a[0][1]=%d.\n",*(*(p+0)+1)); //指針形式
//指向二維數(shù)組的第一維
int *p5;
p5=a[0]; //等同于p5=&a[0][0]; a[0]是第一維的首元素,也是第二維的數(shù)組名。
printf("a[0][1]=%d.\n",*(p5+1));
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。