區別:對指針數組來說,首先它是一個數組,數組的元素都是指針,也就是說該數組存儲的是指針,數組占多少個字節由數組本身決定;而對數組指針來說,首先它是一個指針,它指向一個數組,也就是說它是指向數組的指針,在 32 位系統下永遠占 4 字節,至于它指向的數組占多少字節,這個不能夠確定,要看具體情況。
本教程操作環境:windows7系統、c99版本、Dell G3電腦。
一、數組指針和指針數組的定義
1.指針數組:定義 int *p[n];
指針數組可以說成是”指針的數組”,由于*p沒有括號,首先這個變量是一個數組,其次,”指針p”修飾這個數組,意思是說這個數組的所有元素都是指針類型,而指針所占的字節數和其類型無關,只與系統有關,在32位系統下,任何類型的指針占據4個字節,在64位系統下,任何類型的指針占據8個字節。
由于()的優先級高,首先說明p是一個int類型指針,它是指向一個整型(int)的一維數組,這個一維數組的長度是n,也可以說是總共有n個格子。數組指針也稱指向一維數組的指針,亦稱行指針。
數組指針也可以稱為“數組的指針”,首先這個變量是一個指針,其次,”數組”修飾這個指針,意思是說這個指針存放著一個數組的首地址,或者說這個指針指向一個數組的首地址。
二、數組指針和指針數組的使用
首先定義一個數組指針,既然是數組的指針,說明是用指針p去指向一個一維數組,即:
int (*p)[[4]]; //這里定義int類型,p是一個指針,指向一維數組的首地址,這個一維數組大小為4
登錄后復制
也就是說,int類型的指針p指向int [[4]]的數組,而數組的每一個元素是一個int類型的變量。
數組指針本質是一個指針,而指針的作用就是用來指向變量的地址,所以數組指針一般可以這樣使用(示例):
void fun(int (*P)[4]); //子函數中的形參,數組指針 a[3][4] = {0}; //主函數中定義的二維數組 fun(a); //主函數調用子函數的實參,是二維數組的首元素首地址
登錄后復制
對于指針數組,也就是“指針的數組”,說明這個數組的所有元素都是指針類型。不妨定義指針p,例如:
int *p[[4]]; //這里數組長度為4,所有元素均為int類型的指針
登錄后復制
代碼如下(示例):
void Fun(char** str); //子函數中的形參,指針數組 int main() { int arr[3][4]; char* str = "abc"; char** q = &str; }
登錄后復制
傳遞的參數 | 匹配需要的形參 |
---|---|
int *p[4] | int **p(指針數組或者二級指針) |
int (*p)[4] | int (*p)[4](不變) |
int [3][4] | int (*p)[4](數組指針) |
int **p | int **p(不變) |
三、實際使用的例子
例子:使用指針數組打印出:“sun wu kong”
// 代碼塊 打印“sun wu kong” char str1[] = { 's', 'u', 'n' , ' 主站蜘蛛池模板: 亚洲国产精品久久久久网站 | 97久久超碰国产精品旧版| 国产精品主播一区二区| 精品成在人线AV无码免费看| 亚洲?V乱码久久精品蜜桃 | 久久夜色精品国产网站| 久久国产热这里只有精品| 亚洲欧洲国产日韩精品| 99久久婷婷免费国产综合精品| 亚洲国产精品va在线播放| 久久精品女人天堂AV麻| 国产午夜福利精品久久| 国产精品成人一区二区| 桃花岛精品亚洲国产成人| 97久久精品人妻人人搡人人玩 | 99R在线精品视频在线播放| 国产精品亚洲片夜色在线| 蜜臀精品无码AV在线播放| 无码精品久久一区二区三区| 国产精品99久久精品爆乳| 久久久91精品国产一区二区三区| 精品无码人妻夜人多侵犯18 | 97精品国产福利一区二区三区| 午夜精品久久久久久毛片| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 毛片a精品**国产| 国产精品自产拍在线观看花钱看| 欧美精品第一页| 91大神精品全国在线观看| 91不卡在线精品国产| 国产成人精品一区二区三区| 91精品国产成人网在线观看| 亚洲一区精品中文字幕| 91精品国产福利在线观看麻豆| 四虎影视国产精品亚洲精品hd | 91精品观看91久久久久久| 777被窝午夜精品影院| 国产精品九九九| 久久er国产精品免费观看8| 久久精品亚洲欧美日韩久久| 精品国产成人国产在线观看|