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

時間 2021-08-30 09:32:05

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語言關於指標的求解,C語言中關於指標的指標問題?

出釹 int x 10 p1 a x 3 x 3 3 陣列從0開始,3其實是第四個 b p1 x 3,p1 先執行p1 x 3,也就是指向x 3 因為p1定義成指標。p1 這時候先執行再加,這表示式仍然是3 c p1 x 2,p1 p x 2 x陣列的地址加2,也就是指向x 2 x 2,這時候p 同...

C語言中,怎麼交換指標陣列裡的值

程式主要通過冒泡法使用函式strcmp比較兩指標所值字串大小,通過臨時指標交換兩指標指向,實現字串排序,如下,程式功能,從小到大排序10個字串 include include void bubble sort char a,int n int main int argc,char argv 儲存10...

關於c 中sizeof用法和陣列指標問題

迎風搖擺的樹葉 sizeof arr1 arr1是陣列,arr1裡面是int變數 佔據4個位元組,所以3個變數佔據12個位元組。int source source是乙個指標,若是sizeof source 之後你會發現是4 因為所有的指標都是大小為4 source是指標所指向的元素,int型別 佔據...