我無法理解以下問題的答案。 請幫我:)這段代碼的輸出是什麼
的輸出是什麼:從我的一個朋友
struct INT
{
int i;
};
typedef struct INT INT;
int Change(INT** INTptr)
{
(*INTptr) = (INT*)malloc(sizeof(INT));
(*INTptr)->i = 1000;
return 500;
}
int main()
{
INT dummy = {750};
INT* ptr = &dummy;
ptr->i = Change(&ptr);
printf("dummy.i = %d, ptr->i = %d\n", dummy.i, ptr->i);
return 0;
}
得到這個。
我想答案應該是:
dummy.i = 750,ptr-> I = 500
但是當我運行的代碼(GCC編譯器)我得到:
假人。 i = 500,ptr-> i = 1000
可以用不同的編譯器回答我的問題嗎?
而且,我還是不明白,爲什麼輸出爲500和1000 ...
在此先感謝!
http://i.qkme.me/3ufkkc.jpg – 2013-06-04 12:23:49
有人猜測,編譯器認爲'ptr =&dummy' ,生成代碼爲'dummy.i = ...' – Hasturkun
爲什麼倒票? – barbur