Re: [考題] 程式語言兩題

看板Examination作者 (批踢)時間11年前 (2013/06/26 21:16), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《Mayinggo (馬贏狗)》之銘言: : 1. : Three of the following expressions have the same value. Which of the followi : ng's value is different from the others? : (A)*&Ptr : (B)&*Ptr : (C)*Ptr : (D)Ptr : 某年中正資管所考題 去看yahoo知識+有人說答案是(C) 書上答案是寫(D) : 記得是取值和取址 可是說只有一個跟其他不同...... 大概解釋一下 有錯請更正 假設 int a=5,*ptr; ptr=&a; 在記憶體是這樣的 ptr a 位置| 值 位置|值 1234 5678 5678 5 A) *&ptr 先看內層&ptr 是取ptr位置為1234 而*可以當作以int解析記憶體為1234的內容取得5678 B) &*ptr *ptr 以int解析記憶體為5678的值 5 而&為 取得其記憶體位置 5678 (C)解析記憶體為5678的值 取得5 (D)ptr的值5678 因此答案為C : 2. : Show what is written by the following C++ code. : #include <iostream> : using namespace std; : void AAA(int v1,int v2) : {int tmp=v2;v2=v1-3;v1=tmp+3;} : void pAAA(int *v1,int *v2) : {int tmp=*v2;*v2=*v1+2;*v1=tmp-4;} : void rAAA(int &v1,int &v2) : {int tmp=v2;v2=v1+4;v1=tmp-5;} : int main() : {int i=1; : int j=2; : cout<<"before AAA() i="<<i<<" and j="<<j<<"\n"; : AAA(i,j); : cout<<"after AAA() i="<<i<<"and j="<<j<<"\n"; : pAAA(&i,&j); : cout<<"after pAAA() i="<<i<<" and j="<<j<<"\n"; : rAAA(i,j); : cout<<"after rAAA() i="<<i<<" and j="<<j<<"\n"; : return 0; : } : 解答是before AAA() i=1 and j=2 : after AAA() i=1 and j=2 : after pAAA() i=-2 and j=3 : after rAAA() i=-2 and j=2 : C++不熟沒學過 不過大概知道這題在考傳值傳址呼叫 : 某年政大資管所考題 還請各位大大不吝指教 稍作修改 rAAA裡應該沒有指標 第一次 Call by Value 不改變 第二次 Call by Address 記憶體會宣告指標型態v1跟v2指到i跟j的位置 第三次為 Call by Reference v1跟i共用記憶體 v2跟j共用記憶體 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.136.28

06/26 21:25, , 1F
有解答先推一個!
06/26 21:25, 1F

06/26 21:54, , 2F
推詳解
06/26 21:54, 2F
文章代碼(AID): #1HokcJ5z (Examination)
文章代碼(AID): #1HokcJ5z (Examination)