数组指针指针数组
數組指針:
定義 int (*p)[n];? ? ??占用內存中一個指針的存儲空間
()優先級高,首先說明p是一個指針,指向一個int型的一維數組,故名數組(的)指針。指向的一維數組的長度是n,也可以說是p的步長為n。
例:可指向二維數組,(*(p+i))[n],n為列。
如要將二維數組賦給一指針,應這樣賦值:
int a[3][4]; int (*p)[4]; //該語句是定義一個數組指針,指向含4個元素的一維數組。p=a; //將該二維數組的首地址賦給p,也就是a[0]或&a[0][0]p++; //該語句執行過后,也就是p=p+1;p跨過行a[0][]指向了行a[1][]
所以數組指針也稱指向一維數組的指針,亦稱行指針。
?
指針數組
定義 int * p[n];? ? ??多個指針變量,以數組形式存在內存當中,占有多個指針的存儲空間
[]優先級高,首先說明p是一個數組,數組中元素類型是int *型指針,故名(存)指針(的)數組。p[0]、p[1]、p[2]...p[n-1]元素值都是指針變量。
如要將二維數組賦給一指針數組:
int *p[3]; //p 一維數組內存放著三個指針變量 int a[3][4];for(i=0;i<3;i++)p[i]=a[i]; //都是int *型,p[i]賦予的是二維數組第i個一維數組的首地址 n為行。
這里int *p[3] 表示一個一維數組內存放著三個指針變量,分別是p[0]、p[1]、p[2],所以要分別賦值。
二維數組a[i][j]:
| 數組指針 | int (*p)[n] | (*(p+i))[j]=p[i][j] |
| 指針數組 | int * p[n] | *(p[i]+j)=*(*(p+i)+j) |
?
轉載于:https://www.cnblogs.com/hjh-666/p/11114609.html
總結
- 上一篇: (循环练习题) 五只猴子分桃子
- 下一篇: MVC案例-架构分析