日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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++二维数组指针详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。