c++二维数组指针详解
生活随笔
收集整理的這篇文章主要介紹了
c++二维数组指针详解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
記住很重要的一點(diǎn):數(shù)組名=&數(shù)組名[0],比如,對(duì)于二維數(shù)組a[3][4] ,a等同于&a[0],a[0]等同于&a[0][0]
int main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};int *p1;p1=a[0]; //表示數(shù)組a第一個(gè)元素的地址,相當(dāng)于p1=&a[0][0]//上面可以這么理解:對(duì)于一維數(shù)組a[],數(shù)組名a是第一個(gè)元素a[0]的地址,那么對(duì)于二維數(shù)組a[][],一維數(shù)組名a[0]是它的第一個(gè)元素a[0][0]的地址p1=*a; //和上面的p1=a[0]是等同的,因?yàn)槎S數(shù)組名a表示第一個(gè)一維數(shù)組a[0]的地址,則*a是表示第一個(gè)一維數(shù)組中的第一個(gè)元素即a[0][0]的地址cout<<*p1<<endl; //輸出a[0][0]cout<<*(p1+1)<<endl; //輸出a[0][1]int (*p2)[4];p2=&a[0]; //對(duì)整個(gè)一維數(shù)組a[0]求地址,此時(shí)p2是數(shù)組指針,指向4個(gè)int的一維數(shù)組//此時(shí)p2是一維數(shù)組a[0]的首地址,雖然p2在數(shù)值上與&a[0][0]相等,但與&a[0][0]的意義完全不一樣p2=a; //和上面的p2=&a[0]是等同的,因?yàn)槎S數(shù)組名a表示第一個(gè)一維數(shù)組a[0]的地址cout<<*p2<<endl; //雖然加了取值符號(hào),但此時(shí)*p2仍然是地址,表示所指向的a[0]的第一個(gè)元素的地址,即&a[0][0]cout<<**p2<<endl; //輸出a[0][0]cout<<*p2+1<<endl; //表示所指向的a[0]的第二個(gè)元素的地址,即&a[0][1]cout<<*(*p2+1)<<endl; //輸出a[0][1]cout<<p2+1<<endl; //因?yàn)閜2是指向4個(gè)int的數(shù)組指針,所以指針+1會(huì)跳過(guò)4個(gè)int的地址,移動(dòng)到下一個(gè)一維數(shù)組a[1]的首地址//此時(shí)p2+1是一維數(shù)組a[1]的首地址,雖然p2+1在數(shù)值上與&a[1][0]相等,但與&a[1][0]的意義完全不一樣cout<<*(p2+1)<<endl; //表示所指向的a[1]的第一個(gè)元素的地址,即&a[1][0]cout<<**(p2+1)<<endl; //輸出a[1][0],即輸出5cout<<*(p2+1)+1<<endl; //表示所指向的a[1]的第一個(gè)元素的地址,即&a[1][1]cout<<*(*(p2+1)+1)<<endl; //輸出a[1][1],即輸出6int (*p3)[3][4];p3=&a; //對(duì)整個(gè)二維數(shù)組a求地址,此時(shí)p3是數(shù)組指針,指向int [3][4]型數(shù)組//雖然下面三句輸出的內(nèi)容一樣,但它們表示的意義完全不一樣cout<<p3<<endl; //此時(shí)p3是二維數(shù)組a的首地址cout<<*p3<<endl; //此時(shí)*p3表示a第一個(gè)一維數(shù)組的地址,即&a[0]cout<<**p3<<endl; //此時(shí)**p3表示a第一個(gè)一維數(shù)組的第一個(gè)元素的地址,即&a[0][0]cout<<***p3<<endl; //輸出a[0][0]cout<<p3+1<<endl; //因?yàn)閜3是指向int [3][4]的數(shù)組指針,所以指針+1會(huì)跳過(guò)12個(gè)int的地址,移動(dòng)到下一個(gè)二維數(shù)組的首地址//因此,p3+1相當(dāng)于二維數(shù)組a最后一個(gè)元素的下一個(gè)地址,即&a[2][3]+1return 0; }?
總結(jié)
以上是生活随笔為你收集整理的c++二维数组指针详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python计算信息熵
- 下一篇: python保存的图片不完整