c語言中陣列指標a有啥區別,C語言中陣列指標 a 與a 有啥區別?

2021-04-18 20:30:21 字數 5939 閱讀 3707

1樓:匿名使用者

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

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

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

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

2樓:匿名使用者

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

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

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

3樓:黑丶雨

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

可參考:http://baike.

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

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

可參考:http://baike.

4樓:育知同創教育

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

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

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

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

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

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

5樓:匿名使用者

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

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

例子: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的地址應該算比較明白了吧

謝樓上提醒

6樓:天雲一號

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

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

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

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

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

7樓:匿名使用者

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的玩法:

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

8樓:匿名使用者

摟主先要明確每個詞的後面一個名詞代表其所要定義的型別陣列指標就是指向一個陣列首地址的指標(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語言中一個二維陣列 它的陣列名是a 那a和*a有什麼區別?

9樓:匿名使用者

對於二維陣列名a和*a,二者的區別在於型別不同。

對於type a[m][n];

當使用a時,可以等同於二級指標type **型。

而使用*a時,等同於type*型。

從概念上說,a表示二維陣列a的首地址,而*a表示二維陣列a第一行a[0]的首地址。這樣在使用的時候就有所區別。比如 對a的操作a[4]表示a的第四行首地址,而對*a的操作(*a)[4]則代表第一行的第4個元素,即a[0][4]。

所以a和*a除了值相同外,其它的各方面都是不同的。

10樓:匿名使用者

資料名可以看作指標常量,分配陣列空間時指標值就確定下來了,不像宣告的指標變數那樣,值是不能改變的。*a=a[0],對於二維陣列a[0]也是一個指標,他們都指向陣列的首地址,值都相等,但是,a和a[0]雖然值相等,但對他們進行指標運算時,地址偏移的基礎不同。

11樓:匿名使用者

其實不大 *a就是a[0]都是第一行的地址

12樓:匿名使用者

有無指標指向的區別。

13樓:匿名使用者

a是這個二維資料首地址,*a是第一個元素值。

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

14樓:

c語言中,陣列的名稱等價於陣列的首地址,

當然可以利用指標開闢動態空間,使用方式與

陣列在形式上相同的,

但是他們有一個本質的區別,陣列名相當於一個地址常數,而指標是一個以地址為內容的變數。

指標與陣列的關係可以參考下面的網頁:

15樓:匿名使用者

指標可分為:指標常量,指標變數

。指標常量是指在程式執行過程中變數值不能改變的變數(例如:char* const p = "abc";)。

指正變數是指在程式執行過程中變數值可以改變的變數(int * p;p++;)。

陣列:陣列是裝載的容器,陣列名代表陣列首地址(例如:int a[20],則a代表的是a[0]的地址),陣列名是一個指標常量,在執行過程中不能改變其值(如上:

a的值是&a[0],若有a=&a[2]:則報錯)。

他們的區別:陣列名是一個指標常量,而指標可分為:指標常量和指標變數。

我想你應該明白了。

16樓:匿名使用者

陣列名是陣列的第一個元素的地址,其意義相當於一個指標,比如

int a[10],*p;

p=a; //把陣列的首地址賦給了p

p=&a[0]; //p的初值為a[0]的地址與上面的語句等價可以通過指標引用陣列元素

陣列本來就有兩種表示方法

一種是下標法如a[i];

一種是指標法如*(a+i)或*(p+i)這兩種表示方法都與a[i]等價

17樓:匿名使用者

陣列是存放資料的一段空間,陣列中可以存放字元和數字。指標相當於一個地址,它是指向某個單元的地址。。陣列名相當於指標。。

18樓:匿名使用者

定義char a[100], *b = a;

1、陣列和指標都表示地址,在某些情況下,陣列和指標是可以相互使用的,如訪問某個元素,a[2], *(a + 2), b[2], *(b +2)

2、不同的是,陣列初始化時就有給定值的空間,識別符號不能更改,如a = 0,這是錯誤的。而指標如果不初始化,值是隨機的,需要給指標分配空間才能訪問。

19樓:匿名使用者

簡單明瞭的說:

陣列是裝載的容器,

指標是指向這些容器的地址的。

那為什麼有時候可以用指標來代替陣列呢?

那是因為當指標指向了該陣列的地址的時候,它就可以實現這個功能!

c語言指標 定義 int *a[3] 和 int *(a)[3] 有什麼區別??? 書上的沒看懂啊

20樓:匿名使用者

int *a[3];

//因為bai:du陣列zhi名等效於dao指標,內//因此:int *(* (a+3)) 該型別為指標,即:該陣列的元素為容指標變數

int *(a)[3];

//因為:陣列名等效於指標,比()、*操作符都要高階。

//因此:int * ( *(a+3 ) == int **(a+3) 該型別也為指標,即:該陣列的元素為指標變數

21樓:匿名使用者

int *a[3] 和 int *(a)[3]沒有區別,這個括號是多餘的。

如果你問的是int *a[3] 和 int (*a)[3]的區別,則:專

(1)int *a[3] 中 a是陣列,陣列中每個屬元素是個int型別的指標;

(2)int (*a)[3]中 a是指標,這個指標指向一個長度是3的int型別陣列。

其實,這類問題關鍵就是如何理解(),這裡()就是優先操作,先操作(*a),是個指標,後面就是int [3],是個陣列。

22樓:匿名使用者

因為 [ ]的優先順序 會比 *號高;所以 int *a[3]; a先與[3]結合 代表一個陣列;其次再與int * 結合;

其他的同wxhysoft

23樓:飄秋楓嵐

int *a[3]叫指標陣列,int *(a)[3]叫指向陣列的指標,名字都不一樣,用法也不內一樣。

int *a[3]一般用來存放一系列的字容符串。

如 int *a[3]=;

int *(a)[3]則基本等同於int a[3],用於在函式中做形式引數,接受傳來的資料。如

呼叫fan(a[4][3]);

函式int fan(int *(a)[3])

c語言中的陣列的意義是什麼,c語言中陣列有什麼作用

你想想,當我們想要把一類大量的資料儲存下來的時候 比如說小於1000的偶數 難道你要一個個的定義變數,然後再給他們一個個賦值?這樣重複了大量的操作。而陣列的出現解決了這個問題,你可以只用寫一句語句就可以獲得大量的同類資料儲存單元,如定義int a 1000 就得到了1000個整形資料,再配合迴圈,就...

c語言陣列與指標問題,c語言陣列與指標的問題關係請教

1,書上說的不準確,陣列應該看做一種獨立的型別,sizeof只與型別有關。詳細的可以參考這個 http 如果你弄明白了這個剩下就簡單了。2,我先說一下結論吧。按照你的要求應該這樣定義p int p 3 因為你想要的是訪問每一行的數字,所以需要p為整型指標的陣列,這樣每個元素是整型指標,可以像p 1 ...

c語言中陣列下標最大為多少C語言中陣列下標最大為多少

陣列下標最大為陣列個數減一,例如定義 int a 5 則陣列a的下標最大為4 因為在c語言中陣列的下標是從0開始的,這樣從0到陣列個數減一,共陣列的總個數。例如 include int main 執行結果 1 2 3 4 5 1 2 3 4 5 額 沒有那麼多的吧記憶體吧 比如說int a 5 他的...