C語言,陣列題目,第四題,為什麼C,D兩個選項是不合法的

2021-03-11 05:38:51 字數 1698 閱讀 6754

1樓:gta小雞

c語言指標可以代替陣列使用,會導致很多混淆概念。在乙個字元陣列a裡,變數a實際上是乙個指標,它指向陣列的初始位址,即a[0]資料所在的位址,而整個陣列的資料儲存是連續的,它們被依次存放在從a[0]位址起始的相鄰的儲存單元內。

如char a=一句,宣告這一句後,編譯器會開闢一片連續的空閒位址,並從第乙個字元h開始,把hello world\n這些字元依次儲存到一片連續位址內,然後建立指標char *a,指向第乙個字元h的起始位址。也就是:陣列代表陣列所在記憶體位置的首位址。

上面這句話同樣也可定義為:char *a;a="hello world"。乙個字元型的指標為什麼可以儲存一串字串?

這些字元叫做字串常量,而a儲存的並不是這一串字串常量,而是第乙個字元h的起始位址。由於是連續儲存的,只要知道起始位址,通過位址偏移就可以輸出後面的字元,直到遇到\n為止。

因此再總結一遍:字串陣列儲存的是第乙個字元的位址。

而現在你就知道c為什麼是錯誤的了。char a[2]=,這句話宣告了乙個字串陣列,長度為2,但賦給了它兩個字串常量"a"和"b"同時作為起始位址,乙個指標指向了兩個位址,這會產生const char*型轉char型的報錯。正確寫法應該為:

char a[2]=或char a[3]=,編譯器會將字元a的起始位址傳到指標a。d的錯誤也是一樣的。

2樓:劉文正粉絲

cd是合法的,但c會產生警告.而d則完全不會產生警告,而你沒有把d後面半部分照全,所以沒法幫到你.而c正是後面半部分說錯了.

3樓:太原綁哥

c中字元初始化應使用單引號,如'a'。d中不能給陣列名賦值。

c語言基礎的題目。這兩個定義陣列有什麼區別啊,為什麼乙個是正確的,乙個就是錯誤的呢?

4樓:匿名使用者

const int n 則n是常量

int n 則n是變數

在c語言中,陣列的大小必須是常量。

所以乙個對乙個錯。

5樓:匿名使用者

定義陣列後面那個方括號內不能寫變數,可以寫常量

這個c語言題目求解,a,b,c,d有什麼不一樣,【0】不是表示第乙個嗎,為什麼a,b為1呢,答案選

6樓:匿名使用者

注意以下幾個概念。

首先,y[4]的意義是宣告了包含4個pd的結構體數字,即y陣列裡有四個元素,每個元素都是乙個結構體。y[4]=後面的大括號,是在給y陣列裡第乙個結構體賦值,y陣列裡後面三個結構體元素沒有賦值被預設。

第二,要明白陣列名y,其實質是個指標,y指標指向這個陣列的第乙個元素,這是關鍵。樓主可以去複習一下指標的訪問方式。*y相當於就是y指標指向的變數。

故ab兩個選項,第乙個y陣列元素(是乙個結構體)裡面的,char型code陣列,的第乙個元素是1,因為code陣列整體被賦值100,這個不過多解釋。

第三,再說說d選項為什麼錯,前面說過了,*y指的是y指標指向的變數,你不可以使用:變數加->符號的形式來放問該變數裡面的元素,只有指標才可以使用箭頭符號訪問其中元素。

回答完畢。

c語言 求解為什麼第乙個超出了陣列定義上界,引用不合法,第二個又合法引用了

7樓:春逸花開

陣列a[3][4]是從a[0][0]開始,到a[2][3]結束

c語言題目。為什麼這個選a,C語言這道題為什麼選a

雙引號括起來的叫做字串,字串除了雙引號中的字元外還包括結束標記 0 因此陣列x和y的內容是完全一樣的。char是字元型的意思,x等於 12345 這個整體字元,而y則等於 1 2 3 4 5 這些單個字元的組合,0 是結束的意思。c語言這道題為什麼選a?1 整型常數,預設是int型別。要寫長整型,必...

請問第四題為什麼選A呢,英語第四題為什麼選A

如圖所示,bcd項放在這裡都不合適,a沒有問題望採納 英語第四題為什麼選a 從at the moment可以看出用現在進行時 這道題是說 mary來看你了,她現在正在樓下等你。at the moment 是 現在,當前 的意思,等同於now,因此需要使用現在進行時態,因此選a。at the mome...

C語言第26題為什麼,C語言第26題

這道題主要疑點是b的值,對初學者來說比較容易出問題,該題主要考的是,語法掌握情況,現在逐句解釋如下 首先a 1 b 1 c 未知 a 將a自增1這時a 2 b 1 c 未知 b 1 這句沒有任何意義,它只計算b 1但結果沒有賦值給任何變數,毫無意義,到這裡a 2 b 1 c 未知 c a b 主要是...