问题 单项选择题

有如下程序段
int i=0,j=1;
int &r=i; //①
r=j;//②
int*p=&i; //③
*p=&r; //④
其中会产生编译错误的语句是

A) ④
B) ③
C) ②
D) ①

答案

参考答案:A

解析: 本题考查的知识点是:指针和引用。指针声明的一般形式为: <数据类型>*<声明的指针变量名>;
引用声明的一般形式为:
<数据类型>&<声明的引用变量名>=<被引用的变量名>;
引用声明时必须初始化,而指针则可有可无。通过引用来改变其所引用的对象,直接赋值即可,而通过指针改变其所指对象则须使用一元运算符“*”。在本题中,语句①就是一条合法的引用声明语句,使变量i被r所引用。语句②通过引用r将变量j的值赋给变量i。语句③声明了指针变量p,并初始化指向变量i。而语句④中的*p代表了变量i,欲将&r(变量r的地址值)赋给*p(变量i),这会引起VC6编译器产生一条类型不匹配的错误“无法将类型int*转换为int”。故本题应该选择A。

单项选择题 A1/A2型题
填空题