C語言中關於指標和陣列命名處的問題

時間 2021-08-30 09:31:59

1樓:空雪夢見

前者出錯的原因就和

int a[10];

a = 1;

是一個道理。

一個是可以往裡面存指標的陣列,一個是指向陣列的一個指標。

後者,char (*month) 是宣告 指向陣列的一個指標 的語法這種語法必須指定陣列的大小才能宣告。

char* month 是宣告 一個可以存指標的陣列 的語法,後面就適用「初始化陣列元素」的語法。

2樓:在臨潮湖吃中餐的淺藍暹石

(*p)[n]是陣列指標,代表指向陣列的指標

*month是指標陣列,代表一個元素是指標的陣列

3樓:吊炸天總部

char *p[n];

char (*p)[n];

這兩個的意思分別是:第一個定義了一個含有n個指標型別變數的一維陣列,就是說定義了n個指標變數,分別為p[0]```p[n-1];第二個只是定義了一個指標變數p,只是p的基型別是一個含n個元素的一維陣列,也就是說p++之後p的所指向的地址就加了sizeof(char)*n個位元組。

所以,以你的目的來看,前面是要讓p指向a[m][n]的陣列,所以用第二個定義,後面是要讓p能夠指向十二個字串常量,顯然,一個指標是不能實現的,所以應該用第一個定義,來用p[0]``p[11]分別指向十二個字串常量。

關於c語言 把陣列名賦予指標的問題。

4樓:

就是指向一個地址。陣列第一個元素的地址就是陣列地址。

5樓:gta小雞

你的理解從本質來

上就有問題自

int *p1=a不能通過編譯,因為a是二維陣列指標,型別是int (*)[3],無法轉換到int*型。必須用int (*p1)[3]=a或者int *p1=a[0]才可以。同理int p2=a[0]無法通過編譯,因為a[0]是一個int指標而不是一個int元素,必須用int *p2=a[0]才可以。

a代表二維陣列,它指向的是一維陣列a[0]的地址,該地址恰好和a[0][0]的地址相等,但型別上有著本質區別,a是一個是int*陣列的指標而a[0]是一個int*元素的指標。a[0]代表的是二維陣列a的第一行,是一個一維陣列,指標a[0]是int*型,它指向該一維陣列的首元,即a[0][0]的地址。

C語言中陣列指標關於p a,p a等問題

賽佑平信鵑 問題1 你這種理解是對的 比如陣列int b 2 2 對於int p b 0 那麼p指向的資料就是 同理,p b 1 p指向 問題2 在32位系統中,確實a 和 a傳遞的值都是陣列的首地址 4bytes 但是有個傳遞給什麼型別資料的問題,如果是傳遞給簡單的指標如int p 那麼這兩種形式...

C語言指標和陣列的問題,急

斌and麗 你的程式本來就寫的有錯誤吧!你真的可以執行嗎?用的什麼工具啊?int main void int p1,p2,p3 p2 a 這種賦值是錯誤的吧 p1 a p3 a 4 getch 這裡應該改為getchar return 0 a a a 0 都是一個值,指向首地址。p1是取指標p1的地...

關於c語言中指標賦值的問題,關於C語言中指標賦值的問題

計算天下 你這樣想說明你還沒有真正理解記憶體和指標。int a 表示編譯器隨機取出一個空閒的地址分配給a,不妨設為00000000,長度為sizeof int 不同編譯器可能不同。int p 也表示隨機取出一個空閒的地址分配給p,不妨設為000000f0,長度一般為4個位元組,則這四個位元組現在儲存...