作者pt7441 (批踢)
看板Examination
标题Re: [考题] 程式语言两题
时间Wed Jun 26 21:16:01 2013
※ 引述《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
1F:推 GLTY:有解答先推一个! 06/26 21:25
2F:推 nana0130:推详解 06/26 21:54