請教高手C語言問題

時間 2021-05-04 18:25:42

1樓:匿名使用者

struct ks

s[4],*p;

void main()

p=&s[0]; //這裡取s[0]的位址,哪麼p就是指向陣列的第乙個節點。

p++; //p++ 則p指向s[1] s[1].a=3printf("%d,%d\n",(++p)->a,(p++)->a); //這裡要注意的是,從右往左算,(p++)先提供p再自增,則p(++)->a=3.然後自增,而++p是先自增,所以p已經指向s[3]了,p->a=7,所以輸出為7,3}

2樓:匿名使用者

for(i=0;i<4;i++)

這段程式之後:

s[0].a=1,

s[1].a=3,

s[2].a=5,

s[3].a=7

之後p=&s[0]使p指向s[0],p++使p指向s[1]在printf()函式中:

先計算(p++)->a(值為3),將3壓入堆疊,之後由於p++的作用使p指向了s[2];

再計算(++p)->a,由於++p使p指向了s[3],所以這個表示式返回s[3].a的值,即7,壓入堆疊。

然後,printf()函式從堆疊中取值,首先出棧的是7,輸出7,第二個出棧的是首先入棧的3,輸出3。

所以得到

7,3有關printf()函式堆疊相關的內容,請參考下面的網頁:

3樓:匿名使用者

printf("%d,%d\n",(++p)->a,(p++)->a);時,(++p)-->a相當於迴圈三遍時的陣列值,所以是7,而,(p++)->a相當於迴圈一遍時的陣列值

4樓:

#include//包函標頭檔案

struct ks

s[4],*p; //自定義乙個結構體void main() //主函式入口p=&s[0]; //p是指向s[0]的指標p++; //p自加1,所以p是指向s[1]的指標printf("%d,%d\n",(++p)->a,(p++)->a); //(++p)是指先把p加1再做->命令,即p先指向s[2],故是5,(p++)->是指先讓p指再s[1],再p自加1,故是3}

C語言問題請教,有c語言問題請教

include float convert float c,float f int main void float convert float c,float f 1 你的計算中f是浮點數,c是整型這樣的計算是有問題。2 你無法輸出的原因是,你只執行convert函式,但是卻沒有輸出它的返回值,方法...

請教C語言問題,求高手指教,請教乙個C語言問題,求高手指教

思路基本沒錯,也基本正確,個別地方出錯了。1 由於acm是先全部輸入再統一輸出,你用乙個max來儲存肯定有問題,可以需要事先宣告乙個陣列來儲存結果。下面 裡是用動態記憶體申請陣列。2 就是排序比較的時候,你有個問題,估計是手誤 if i t 實際上應該是if j t 因為i是外層迴圈,j才是你要排序...

請教C語言問題,請教乙個C語言問題

第乙個引數需要填寫的是 myout.txt 檔案檔案路徑及檔名 第二個引數則代表著流形態,其中有以下幾種狀態 r 開啟唯讀檔案,該檔案必須存在。r 開啟可讀寫的檔案,該檔案必須存在。rb 讀寫開啟乙個二進位制檔案,只允許讀寫資料。rt 讀寫開啟乙個文字檔案,允許讀和寫。w 開啟只寫檔案,若檔案存在則...