急急急~救救我的計概作業吧 高手們

2007-06-30 11:11 pm
1.What is true after the following statement in a C program have been
excuted??

int* intPointer;
intPointer = (int*) 500
*intPointer = 10

回答 (3)

2007-07-01 5:19 am
✔ 最佳答案
其實這題很難說是哪裡錯, 我實際試了一下

int* intPointer;
intPointer = (int *)500;
*intPointer = 10;
這個會當機, 因為第二行讓指標指向500那個位置, 我們根本不知道那裡是什麼程式所在, 然後塞10進去, 所以造成當機, 要說是第三行的錯誤嗎? 這個塞值的動作本身是OK的, 要說第二行錯嗎? 這個指定位置的動作也沒錯, 錯在不該指定到一個莫名其妙的地方去

怎麼証明第三行沒錯呢?
int* intPointer;
intPointer = new int;
*intPointer = 10;
printf("int=%d\n", *intPointer);
只要讓intPointer指到一個我們自己new出來的位置, 然後塞值給他, 這次可以發現程式不會當掉而且能正確顯示10, 所以程式是沒錯的

這個問題變得有點詭異; 指標指向500其實也沒什麼問題, 只要不塞值就好了; 塞值也沒什麼大不了的, 只是不能在指向500的時候塞值. 所以唯一沒有問題的敘述是宣告指標的敘述???? 太奇怪的問題了


2007-07-01 5:34 am
有錯沒錯還要看使用的平台.
如一些沒OS的平台.RAM 的使用完全由程式設計師控制下. 這個程式一點錯誤也沒有.
2007-07-01 1:48 am
*intPointer = 10;

我想只有這行程式是錯誤的。

必須寫成 intPointer = &10;


收錄日期: 2021-04-28 23:08:02
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070630000010KK05037

檢視 Wayback Machine 備份