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 主要是...