看板 TransCSI 關於我們 聯絡資訊
※ 引述《RJking (RJ-king)》之銘言: : ※ 引述《OREO5566 (餅乾好吃耶)》之銘言: : : 1.假設整數X所在的位址為1000,指向雙精準度浮點數資料的指標變數P所在的位 : : 址為4000,經過下列運算之後,各選項的答案為何?(32位元) : : X=10; : : P=(double*)&X; : : *P=20; : : [1]X [2]&X [3]sizeof(X) [4]&P [5]*P [6]sizeof(P) : : [7]sizeof(P) [8]sizeof(*P) [9]*P-1 [10]*P++ : 1. 20 (不過C::B跟VS2005的結果都是'0',應該跟記憶體分配大小有關) 不對唷 答案是 0 沒錯 因為 p 是 double 所以*P=20時 20是以ouble方式存入的 根據IEEE754 20 的DOUBLE為 0100000000110100....0 *******這邊為51個0 因此存入memory時 1000 1001 1002 1003 1004 1005 1006 1007 00000000 00000000 00000000 00000000 00000000 00000000 00110010 0100000 00 00 00 00 00 00 52 64 ^ ^ bit7 bit0 因此 p是 1000~1003 以int角度來說是 0 : 2. 1000 : 3. 4 : 4. 4000 : 5. 20 : 6. 4 : 7. 題目跟6一樣...檢查一下吧 若是sizeof(&P)則答案是4 : 8. 8 : 9. 19 : 10. 21 : : 2.下列的程式碼中,出現什麼問題 : : void main( ) : : { : : int x=100 ; : : int *p ; : : int *q=&x ; : : *p=*q+x ; : : } : 指標p指定值之前尚未初始化,所以指標p沒有指向任何記憶體位置,自然不能指定值 : : 3.巢狀struct的資料結構,試利用此struct宣告struct變數dataS,並且設定內部資料 : : 如i=20,j=30,寫出main程式,敘述此資料設定動作及資料呈現 : : struct ints : : { : : int i ; : : struct int w : : { int j ; } dataW ; : : } ; : 先問"struct int w"這行是不是多一個空白?正確的程式碼是不是"struct intw"? : 以下程式碼依據上述程式碼修正之後的struct宣告而寫: : int main() : { : ints dataS; : dataS.i = 20; : dataS.dataW.j = 30; : cout<<dataS.i<<endl<<dataS.dataW.j<<endl; : return 0; : } : : 4.何謂動態記憶體?c和c++在動態記憶體是如何配置與釋放 : 第一小題自己查一下吧... : 總之就是變數宣告時不先確定相對的記憶體大小 : 等到後續再依程式碼決定該變數的記憶體大小 : 第二小題: : C:malloc() //配置 : free() //釋放 : C++:new //配置 : delete //釋放 : 用法自己找下吧 -- 明天不一定更美 但更美的明天一定會來 ^^我們一起共勉之^^!☆★ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.68.135
RJking:是這樣沒錯,當初太懶得去轉IEEE754所以乾脆說是記憶體配置 04/16 05:16
RJking:的關係 只能說出題老師太機車,想要一題就考一堆觀念= = 04/16 05:18