c語言中的指標陣列和陣列指標的區別

2021-03-22 02:00:18 字數 3573 閱讀 5453

1樓:黑丶雨

指標陣列:陣列裡的每乙個元素都是指標如*p[10],裡面的 p[0] 到 p[9] 都是指標;

可參考:http://baike.

陣列指標:指向乙個陣列的指標,如 arr[10] 是乙個陣列, 讓乙個指標指向這個陣列 p = arr;

訪問時通過 *(p + n) 或 p[n] 訪問元素值,n為元素索引值;

可參考:http://baike.

2樓:育知同創教育

int (*p)[4]; // 定義乙個陣列指標,指向含4個元素的一維陣列,陣列元素是int型別。

int *p[4]; // 定義乙個指標陣列,陣列中每個元素是乙個指標,指標指向**就要根據程式來定了。

判斷陣列指標與指標陣列主要通過運算子的優先順序來判斷。

int (*p)[4]; // 由於( )的優先順序高,說明p是乙個指標,指向乙個一維陣列的指標

int *p[4]; // 由於[ ]的優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列

c語言中:陣列指標與指標陣列有什麼區別?

3樓:匿名使用者

陣列指標是指向這個陣列首位址的指標,指向物件是這個陣列;

指標陣列是存放一類指標的陣列,這個陣列的每個元素都是乙個指標;

例子:int a[10];

int* s;

s = a;//這裡s就是乙個陣列指標,它的值就是陣列a 的首位址;當然,如果a是乙個整數,那s就是乙個指向整型的指標;

int a;

int* s[5];

for(int i=0;i<5;i++)s[i]=a;

//這裡s就是乙個指標陣列,它的每個元素都是整型變數a的位址應該算比較明白了吧

謝樓上提醒

4樓:天雲一號

int (*p)[4]; // 定義乙個陣列指標,指向含4個元素的一維陣列,陣列元素是int型別。

int *p[4]; // 定義乙個指標陣列,陣列中每個元素是乙個指標,指標指向**就要根據程式來定了。

判斷陣列指標與指標陣列主要通過運算子的優先順序來判斷。

int (*p)[4]; // 由於( )的優先順序高,說明p是乙個指標,指向乙個一維陣列的指標

int *p[4]; // 由於[ ]的優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列

5樓:匿名使用者

1.大概說一下這三種

int * a;            這叫整型指標   這玩意兒不能指向陣列,搞清楚指向的是陣列首元素

int (* b);       這叫整型陣列指標     意思是指向陣列的指標

int * c[5]=null;          這叫整型指標陣列     意思是儲存指標的陣列

下來舉個例子,理解一下:

2.定義乙個陣列,下面舉例解釋

int i[5]=;        //定義整型陣列,五元素皆為0

int n[5][5]=;            //定義二維陣列

3.三種分別舉例

(a的例子)

a=i;         //這裡i是陣列名,i相當於&i[0]。陣列名相當於是陣列i的首位址。此時* a指向陣列i首元素。

a++;然後輸出就是i[1]的值

(b的例子)

b=n;        //二維陣列名相當於n[5]這個陣列,注意這塊兒,這塊兒最難搞清楚。n代表的不是第一行第乙個元素的位址,而是代表第一行元素的所有位址的陣列。這塊的指標陣列b相當於存放了n陣列第一行的所有元素的位址。

//這塊的陣列指標b和上面的指標a比較,a指向的是陣列的首元素,而b指向的是整個陣列(或者說是存放了整個一維陣列的多個元素(二維陣列由一維陣列構成,二維陣列的第一行即是乙個一位陣列))

然後我們輸出(* b)[2]相當於輸出了n[0][2]

如果b++然後輸出(* b)[2]相當於輸出了n[1][2]

c的玩法:

太簡單了,不想說了。就是存放多個指標的陣列,自己想想。

6樓:匿名使用者

摟主先要明確每個詞的後面乙個名詞代表其所要定義的型別陣列指標就是指向乙個陣列首位址的指標(aa);

舉例:char a="hello world";

char *aa;

aa=a;

指標陣列就是乙個陣列,這個陣列的元素是指標;

舉例:char a='t';

char *aa[2];

a[0]=a;

a[1]=a;

附:感覺樓上的這段舉例有點問題

int a[10];

int* s;

s = &a;

c語言中,指標陣列和行指標的區別是什麼?

7樓:藏天地

int(*p)[4],這個就是行指標

這種型別的指標p是指向乙個一維陣列,這個一維陣列包含4個整形元素

但是 int a[4];p=a; 這種方式卻是不對的

因為p只能指向乙個整型的一維陣列,不能指向乙個整型資料,a所指向的正是a[0],是個整型數;

實際上int(*p)[4]這種型別的指標是用於多維陣列中的,比如定義乙個二維陣列int b[3][4],就可以這樣賦值p=&b[0],使p指向一維陣列b[0],而且p的增減是以一維陣列的長度為單位的,比如p+1指向的就是b[1]了

int *p[4]這個是指標陣列了,首先弄明白這個是陣列,裡面存放的是指標也就是位址,這個位址所指向的是乙個整型資料,你可以把p[0],p[1]....當作乙個個的指標變數來使用

我學的時候也弄了半天才搞明白,這是我總結的,你多看看指標那關於多維陣列與指標的一節,做些練習自己驗證幾次就容易弄明白了

8樓:匿名使用者

簡單的說就是乙個是指向陣列的指標,乙個是陣列成員是一族指標

具體哪個是哪個我也時常分不清楚。但用起來就知道了

c語言中陣列指標*a[]與a[]有啥區別?

9樓:匿名使用者

第乙個a中有2個符號,所以要看優先順序,看限於誰結合。已知比*優先所以版第乙個a先與

權結合,所以a是乙個陣列,陣列中的元素都是指標a就單單表示陣列。

例子:char *a; //a是陣列,元素都是char * (即指標)

char a; //a是陣列,元素都是char (即字元)

10樓:匿名使用者

*a 這個為指標陣列,int *a[5];就定義了乙個大小為5的指標陣列,a[0]-a[4]可以指向不同的int;

a這個就是乙個普通陣列。

陣列指標和指標陣列的區別,c語言中的指標陣列和陣列指標的區別

int a 3 4 這個bai無需多說,就du是乙個二zhi維陣列。int p 4 就相當於daoint p 4 它就是乙個二維陣列的指標,可以 專指向乙個第屬二維度為4的二維陣列。而a就是這樣的陣列,因而下面是合法的。p a int p 3 是指標陣列。說白了,就是定義了三個指標,分別為p 0 p...

c語言中字元陣列和字元指標的問題

在函式內 char陣列被定義成局 部變數,函式執行後會被系統給釋放掉。但char p 則是定義成乙個常量,程式執行完後才會釋放掉。所以在返回char p 時會返回亂碼,但 char p 則可以全部顯示出來 當然 char 也可以定義成靜態變數 這樣就可以顯示出來了不如static char p he...

c語言陣列越界,C語言陣列(指標)越界訪問

第乙個和第二個陣列a 2 按指標說就是指向a 1 也就是30的記憶體下乙個位置,兩種程式排列不一樣,第二個下乙個應該是i的位置,第乙個不一定,可能是堆裡面的隨機數。恩。打個比方說有一天你去賓館訂了個房間。然後再牆壁上鑿了個洞看隔壁住著誰。後來又有一天你又去訂了乙個房間,然後又在牆壁上鑿了個洞看隔壁住...