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 ...