C語言指標陣列的問題,請教各位大神

2021-05-04 18:27:57 字數 1006 閱讀 9397

1樓:匿名使用者

第一點,兩個按照順序儲存,所以噸輸出後輸出米,車,長

第二點,sizeof(arrayquantityunit)這句話的結果是4,因為指標是4個位元組

2樓:匿名使用者

請注意sizeof的使用,sizeof計算出來的結果是按照byte計算的,一個指標變數在32位系統中佔4byte(32bit), sizeof計算出來的結果是4,迴圈了4次,所以輸出的內容已經讀取陣列越界了,第二個陣列定義在第一個的後面所以就輸出了第二個的內容,要是第二個陣列定義在前面那麼輸出的可能是亂碼等內容。

以下是完善之後的**,請檢視。

#include

typedef structstring_st;

const unsigned char arrayquantityunit = "噸";

const string_st arraycarlength =,,};int main()

for(int i = 0; i < (sizeof(arraycarlength)/sizeof(arraycarlength[0])); i ++)

return 0;}

3樓:繆立軍

arrayquantityunit中只有一個字串,sizeof(arrayquantityunit)等於4,迴圈進行4次,當j=0時,取arrayquantityunit[0]的字串即取到「噸」,當j=1時,取arrayquantityunit[1]的字串,事實上此時陣列已經越界,理論上程式應報錯,但是由於你後面跟著定義了字串陣列,剛好有三個字串,程式就把它們對應為arrayquantityunit[1]、arrayquantityunit[2]、arrayquantityunit[3],所以你的程式剛好不會出錯,且輸出為你給的結果。

如果更改定義char *arrayquantityunit = ;//單位

另外一個字串陣列定義不變,則程式將報錯,因為迴圈要進行8次,而最多隻有5個字串,所以程式訪問出錯。

C語言表示式問題以及指標陣列,C語言指標陣列的問題

1 那個表示式的意思是,a 2,然後把4乘以5的結果賦值給a即最後 a 的值為20,a 2的結果沒有賦值給a。2 char name 宣告一個二維char型的指標。這樣進行初始化 char name 是因為編譯器可以根據 以及,來確定二維char 型陣列的維數。一維維數即為字串個數,3 二維維數是這...

c語言指標符號問題,C語言指標符號問題?

當你想儲存一個地抄址的時候不加 int a 0 p a 當你想取指標裡的值 的時候加 int b b p b a b 0 就是說把a地址儲存的值取出來。當 p的值還是指標的時候 int p null int q null int a 0,b 1 q a p q p a 結果就是q 指向a p指向q ...

c語言陣列問題

x 1 1對應的是陣列中第二行第二列x 1 1 所以是6 include include void main for i 0 i 5 i 放入新陣列printf n for i 0 i 5 i 輸出新陣列 求平均值 printf 平均值為 n for i 0 i 5 i b i c i 0 c i ...