作者avogau ( 假 裝)
看板TransCSI
標題Re: [請益] 一些問題...
時間Thu Apr 16 00:40:37 2009
※ 引述《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