關於sizeof問題,這個程式輸出結果怎麼解釋??求高手指教啊!謝謝了!!

  • 作者:由 匿名使用者 發表于 攝影
  • 2022-10-07

關於sizeof問題,這個程式輸出結果怎麼解釋??求高手指教啊!謝謝了!! 誰伴我闖蕩2017.02.05 回答

1。 sizeof(a)輸出結果為12,因為字串以‘\0’結束,‘\0’佔一個位元組。

2。 sizeof(p)32位系統輸出為4位元組(4位元組=4*8位=32位),64位系統輸出為8位元組(8位元組=8*8位=64位),。指標只是一個存放變數地址的一個變數

3。 strlen(p)輸出結果為11。strlen不區分是陣列還是指標,就讀到\0為止返回長度。而且strlen是不把\0計入字串的長度的。

strlen(a)的結果也是11

指標變數的sizeof

學過資料結構的你應該知道指標是一個很重要的概念,它記錄了另一個物件的地址。既然是來存放地址的,那麼它當然等於計算機內部地址匯流排的寬度。所以在32位計算機中,一個指標變數的返回值必定是4(注意結果是以位元組為單位),可以預計,在64位系統中指標變數的sizeof結果為8。

關於sizeof問題,這個程式輸出結果怎麼解釋??求高手指教啊!謝謝了!!逍遙男孩2017.02.05 回答

對於這短程式碼第一行程式碼它等價於下面的程式碼:

file *f1,*f2;

f1=fopen(“con”,w“);

f2=fopen(”con“,”w“)

file *f[]={f1,f2};

至於fopen我就不多說了,樓上的都解釋了

for(int i=1;i<10;fprintf(f[(i+1)%2],”%d\n“,i++));

這個就簡寫成這樣有助於你理解,它們都是等價的

for(int i=1;i<10;){

fprintf(f[(i+1)%2],”%d\n”,i++);

}

fprintf()的函式原型是int fprintf(file *stream,char *format [,argument]),第一個引數是檔案流,也就是檔案指標,上面的f[(i+1)%2]表示檔案的指標一直在f[0]和f[1]之間來回切換,即在f1和f2之間切換。第二個引數是格式符,上面的%d就是輸入數字

我只針對你出的題回答,而且你這個程式有邏輯上的錯誤,要進行修改

關於sizeof問題,這個程式輸出結果怎麼解釋??求高手指教啊!謝謝了!!匿名使用者2017.02.05 回答

sizeof對陣列輸出的陣列的大小,對指標輸出的是指標本身所佔的大小。

Top