C指標陣列

時間 2022-07-21 11:55:12

1樓:

1:int *p[2]好理解的,指標陣列,p[0], p[1]都是一個指標

2.int (*p)[2],定義指向二維陣列的指標,此二維陣列的第二維必須是2.

如當有int (*p)[2]時:

int a[3][3]; p=a;是錯的.

int a[3][2]; p=a;是正確的。

同理 int (*p)[3][4];定義指向三維陣列的指標,此三維陣列的第二維必須是3第三維必須是4.

之所以在定義指向多維陣列的指標時要規定除第一維以外的基它維的維度,是因為:

a.當執行有如p++是讓編譯器知道把指標移動多少位元組,如int (*p)[2]當執行p++時會移動兩個int 型所佔用的空間.如果不指定第二維變成int (*p);則執行p++是隻會移動一個int型所佔用的空間.

b.當執行有如p[n]時讓編譯器知道去尋找距離p多少位元組的記憶體。

2樓:

首先要清楚的優先順序別比*高,所以:

沒有括號時的int *p[2]表示指標陣列,也就是說首先他是一個陣列,然後在陣列的基礎上詳細的描述一下的話才是*的部分,即兩個元素存放的為指向int型別(整型)的指標的這麼一個陣列;

而有括號的int (*p)[2]因為有括號的存在而改變了原有的優先順序,所以先看括號裡的部分——指標,然後再在此基礎上進行修飾描述為:指向陣列的指標。換句話說就是他是一個指標,可以指向的型別為具有兩個元素的整型的陣列。

如果對這裡理解還是有困難的話,我當時學的時候是這樣理解記憶的:

首先指標陣列比較的簡單應該沒有問題,在理解了優先順序的基礎上就可以了,而指向陣列的指標的含義可以參考多維陣列名的含義來理解和分析記憶。指標就是地址,比如a[2][2],那麼此時的陣列首地址可以用陣列名來表示a,那麼a[0]現在就相當於是一個指向陣列的指標了,因為此時a[0]表示的是二維陣列中首行元素的地址(當然也是首行首個元素的地址),對照而言就相當於是一個指向陣列的指標了。如果多維陣列理解的清楚的話,好好的聯絡一下就清楚了。

指標部分是精華的地方,當然也是最容易出錯的地方,比較的靈活,是重要的部分。看書之餘剛好看到你的問題,希望對你有所幫助!

3樓:匿名使用者

int (*p)[2]這兒p是一個指標變數,它指向的是含2個元素的一維陣列。

int *p[2]這個是定義指標陣列p,它由2個指向整形資料的指標元素組成。

4樓:德銀河

前面的是指標陣列,後面的是陣列指標

指標陣列:就是一個整數陣列,那個陣列的各個元素都是整數,指向某個記憶體地址。

陣列指標:陣列名本身就是一個指標,指向陣列的首地址。注意這是一個常數。

5樓:匿名使用者

*p[2] : 含有兩個指標元素的陣列

(*p)[2] : 表示行指標, 相當於二維陣列, 與p效果類似

C 陣列與指標,C 陣列與指標

首先看p 它是一個指向int 型別指標的指標。再看b b在除了sizeof b 的其他所有表示式中均隱式的轉換成一個指向它儲存物件型別的指標。只在表示式中才這樣的轉化 在c c 中其實是沒有多維陣列的。多維陣列都是通過一維陣列實現的。其實陣列本身也是一種物件。int b 2 2 實際上可以理解成in...

c指標陣列怎麼用,還有指標陣列和陣列指標

名字可能拗口一點。增加一個 的 就好理解了 指標的陣列 和 陣列的指標 指標的陣列 和 整型的陣列 類似,就是指一個陣列,其中每一個元素是指標型別。從陣列中取出一個元素 指標 後,再根據這個元素 指標 的指向地址,對實際的記憶體空間進行操作。陣列的指標 就是指一個陣列的首元素的地址,陣列中儲存的元素...

c 指標陣列問題,C 中關於指標陣列的問題。

是錯誤的。char cchar count 宣告瞭cchar是有count個元素的陣列,每個元素都是指向char型變數的指標。但cin cchar i 卻試圖給cchar的第二個元素 指標 賦一個鍵盤值 這裡指標還沒有確定指向,是隨機的,它隨機地指向了不能寫入的地方,就要出錯。這裡應該先給指標陣列賦...