站長資訊網
最全最豐富的資訊網站

指針數組和數組指針的區別是什么

區別:對指針數組來說,首先它是一個數組,數組的元素都是指針,也就是說該數組存儲的是指針,數組占多少個字節由數組本身決定;而對數組指針來說,首先它是一個指針,它指向一個數組,也就是說它是指向數組的指針,在 32 位系統下永遠占 4 字節,至于它指向的數組占多少字節,這個不能夠確定,要看具體情況。

指針數組和數組指針的區別是什么

本教程操作環境:windows7系統、c99版本、Dell G3電腦。

一、數組指針和指針數組的定義

1.指針數組:定義 int *p[n];

指針數組可以說成是”指針的數組”,由于*p沒有括號,首先這個變量是一個數組,其次,”指針p”修飾這個數組,意思是說這個數組的所有元素都是指針類型,而指針所占的字節數和其類型無關,只與系統有關,在32位系統下,任何類型的指針占據4個字節,在64位系統下,任何類型的指針占據8個字節。

2.數組指針:定義 int (*p)[n];

由于()的優先級高,首先說明p是一個int類型指針,它是指向一個整型(int)的一維數組,這個一維數組的長度是n,也可以說是總共有n個格子。數組指針也稱指向一維數組的指針,亦稱行指針。

數組指針也可以稱為“數組的指針”,首先這個變量是一個指針,其次,”數組”修飾這個指針,意思是說這個指針存放著一個數組的首地址,或者說這個指針指向一個數組的首地址。

指針數組和數組指針的區別是什么

二、數組指針和指針數組的使用

1.數組指針

首先定義一個數組指針,既然是數組的指針,說明是用指針p去指向一個一維數組,即:

int (*p)[[4]];  //這里定義int類型,p是一個指針,指向一維數組的首地址,這個一維數組大小為4
登錄后復制

也就是說,int類型的指針p指向int [[4]]的數組,而數組的每一個元素是一個int類型的變量。

數組指針本質是一個指針,而指針的作用就是用來指向變量的地址,所以數組指針一般可以這樣使用(示例):

void fun(int (*P)[4]); //子函數中的形參,數組指針   a[3][4] = {0}; //主函數中定義的二維數組 fun(a); //主函數調用子函數的實參,是二維數組的首元素首地址
登錄后復制

2.指針數組

對于指針數組,也就是“指針的數組”,說明這個數組的所有元素都是指針類型。不妨定義指針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' , '

亚洲毛片av日韩av无码|
日韩福利视频精品专区|
国产在线精品二区|
日韩不卡手机视频在线观看|
亚洲精品GV天堂无码男同|
中文字幕精品无码一区二区|
国产成人精品综合久久久|
亚洲AV日韩AV永久无码下载|
69p69国产精品|
日韩精品亚洲专区在线观看|
国精品午夜福利视频不卡|
国产啪精品视频网站丝袜|
久久精品成人无码观看56|
日韩国产精品视频|
久久精品国产亚洲av麻豆色欲|
日韩免费一级毛片|
久久精品亚洲中文字幕无码网站|
在线91精品亚洲网站精品成人|
国内精品久久久久久久97牛牛|
国产亚洲精品欧洲在线观看|
麻豆国产精品入口免费观看|
亚洲最大天堂无码精品区|
97精品国产手机|
国产高清国内精品福利|
亚洲精品伊人久久久久|
精品欧洲av无码一区二区14|
久久精品国产日本波多野结衣|
91大神精品在线观看|
91免费福利精品国产|
69国产成人综合久久精品91|
精品亚洲成a人片在线观看少妇|
亚洲国产成人精品无码区在线观看
|
国产精品欧美成人|
亚洲精品天堂无码中文字幕|
亚洲国产成人久久精品软件|
亚洲国产精品成人综合色在线|
亚洲欧美日韩国产精品一区|
亚洲人精品亚洲人成在线|
国产成人愉拍精品|
久久久一本精品99久久精品66直播|
国精品产区WNW2544|