當前位置:
首頁 >
c++二维数组指针详解
發布時間:2024/7/23
28
豆豆
生活随笔
收集整理的這篇文章主要介紹了
c++二维数组指针详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
記住很重要的一點:數組名=&數組名[0],比如,對于二維數組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]; //表示數組a第一個元素的地址,相當于p1=&a[0][0]//上面可以這么理解:對于一維數組a[],數組名a是第一個元素a[0]的地址,那么對于二維數組a[][],一維數組名a[0]是它的第一個元素a[0][0]的地址p1=*a; //和上面的p1=a[0]是等同的,因為二維數組名a表示第一個一維數組a[0]的地址,則*a是表示第一個一維數組中的第一個元素即a[0][0]的地址cout<<*p1<<endl; //輸出a[0][0]cout<<*(p1+1)<<endl; //輸出a[0][1]int (*p2)[4];p2=&a[0]; //對整個一維數組a[0]求地址,此時p2是數組指針,指向4個int的一維數組//此時p2是一維數組a[0]的首地址,雖然p2在數值上與&a[0][0]相等,但與&a[0][0]的意義完全不一樣p2=a; //和上面的p2=&a[0]是等同的,因為二維數組名a表示第一個一維數組a[0]的地址cout<<*p2<<endl; //雖然加了取值符號,但此時*p2仍然是地址,表示所指向的a[0]的第一個元素的地址,即&a[0][0]cout<<**p2<<endl; //輸出a[0][0]cout<<*p2+1<<endl; //表示所指向的a[0]的第二個元素的地址,即&a[0][1]cout<<*(*p2+1)<<endl; //輸出a[0][1]cout<<p2+1<<endl; //因為p2是指向4個int的數組指針,所以指針+1會跳過4個int的地址,移動到下一個一維數組a[1]的首地址//此時p2+1是一維數組a[1]的首地址,雖然p2+1在數值上與&a[1][0]相等,但與&a[1][0]的意義完全不一樣cout<<*(p2+1)<<endl; //表示所指向的a[1]的第一個元素的地址,即&a[1][0]cout<<**(p2+1)<<endl; //輸出a[1][0],即輸出5cout<<*(p2+1)+1<<endl; //表示所指向的a[1]的第一個元素的地址,即&a[1][1]cout<<*(*(p2+1)+1)<<endl; //輸出a[1][1],即輸出6int (*p3)[3][4];p3=&a; //對整個二維數組a求地址,此時p3是數組指針,指向int [3][4]型數組//雖然下面三句輸出的內容一樣,但它們表示的意義完全不一樣cout<<p3<<endl; //此時p3是二維數組a的首地址cout<<*p3<<endl; //此時*p3表示a第一個一維數組的地址,即&a[0]cout<<**p3<<endl; //此時**p3表示a第一個一維數組的第一個元素的地址,即&a[0][0]cout<<***p3<<endl; //輸出a[0][0]cout<<p3+1<<endl; //因為p3是指向int [3][4]的數組指針,所以指針+1會跳過12個int的地址,移動到下一個二維數組的首地址//因此,p3+1相當于二維數組a最后一個元素的下一個地址,即&a[2][3]+1return 0; }?
總結
以上是生活随笔為你收集整理的c++二维数组指针详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python计算信息熵
- 下一篇: python保存的图片不完整