存在如下定义:int a=5,b=5,*c=&a,&d=b,下列赋值语句正确的是 A a=d+

存在如下定义:int a=5,b=5,*c=&a,&d=b,下列赋值语句正确的是
A a=d+b
B a=b+c
C a=*d+c
D 以上都错

&d=b是把b的值附给了d的地址吗?

(1)&在此不是求地址运算,而是起标识作用。

(2)类型标识符是指目标变量的类型。

(3)声明引用时,必须同时对其进行初始化。

(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。

int a,&ra=a;

a为目标原名称,ra为目标引用名。给ra赋值:ra=1; 等价于 a=1;

(5)对引用求地址,就是对目标变量求地址。&ra与&a相等。即我们常说引用名是目标变量名的一个别名。别名一词好像是说引用不占据任何内存空间。但是编译器在一般将其实现为const指针,即指向位置不可变的指针。即引用实际上与一般指针同样占用内存。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-17
int &d=b;这句的意思是d是b的引用(可以看做d就是b,d就是b的一个别名),题目选A追问

B和C怎么错了?解释一下吧

追答

B错在c是指针,要得到指针所指的变量的值应该*c, B 应该a=b+*c
C错在d不是指针而是引用,不能*d ,且c是指针,存的是a的地址而不是a的值。C应该a=d+*c

本回答被提问者采纳
第2个回答  2014-12-30
先说一下引用,
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名
说明:
(1)&在此不是求地址运算,而是起标识作用。
(2)类型标识符是指目标变量的类型。
(3)声明引用时,必须同时对其进行初始化。
(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
ra=1; 等价于 a=1;
(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。
这是主要也是很简单的几点,要理解透彻!
另外引用还有如下的规则:
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。
(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。

下面我通俗的讲一下这道题,
int &d=b;其实就是给b取了个别名d,打个比方,小明的年龄是10岁,小明的小名叫小强,我说我的年龄是小明和小强年龄的和,其实就是说我的年龄是小明的年龄+小明的年龄,小强就是小明!
这里也是一样的道理,a=b+d等价于 a=b+b;b和d是同一个变量!你说a=b+b合法不合法呢?答案很显然,这是正确的!

一定要弄清楚引用的含义!因为很多地方我们都必须使用引用来直接获取参数,从而避免创造副本,难以返回参数值等情况。建议再看一看书,书上写的应该比较详细!如果觉得无法理解,建议找老师当面讲解!因为这真的是非常重要的知识点。

下列赋值语句正确的是( ) A. B. C. D
D 解:因为赋值语句就是将数字和式子赋值给变量,一次只能给一个变量赋值,因此选D

已有如下代码: char a[5],*p=a; 则下面选项中正确的赋值语句是()
【答案】:A P是字符型指针,将“abcd”的地址给了p,也就是p指向“abcd"的首地址,也就是 指向a的地址

inta=5; b=5;
3、在变量说明中,不允许连续给多个变量赋初值。 如下述说明是错误的: int a=b=c=5 必须写为 int a=5,b=5,c=5; 而赋值语句允许连续赋值。4、注意赋值表达式和赋值语句的区别。 赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。

已知int a=5,b=5; 则表达式: ++a>b?a:b-->++a?++b:a的值为6。
已知int a=5,b=5; 则表达式: ++a>b?a:b-->++a?++b:a的值为6。这个题有两个问号表达式,而且还有嵌套现象,所以它的关键,是把表达式的计算过程(先后顺序)搞清楚,是按下面 (1)(++a>b?a:b--)>(++a?++b:a)(2)((++a>b?a:b--)>++a)?++b:a (3)++a>b?a:(b...

(6) 设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
选D.A.p是一个指针,不能给它赋一个整型的值1B.*q仍然是一个指针,*q就是p.所以也不能给它赋一个整型的值.C.q=p;q是个二级指针,p是一级指针,不能把一级指针赋给二级指针.*p=5,即给n赋值为5,正确.

下列给变量赋值的语句正确的是( ) A.5=a B.a+2=a C.a=b=4 D.a=2*
根据题意,A:左侧为数字,故不是赋值语句B:左侧为代数式,故不是赋值语句C:为用用两个等号连接的式子,故不是赋值语句D:赋值语句,把2a的值赋给a.故选D.

若有以下定义int a,b; float x,则正确的赋值语句是 。 A、 a=1,b=...
答案A B: b++不是赋值语句 赋值语句要求有 = C: 没分号, 不允许连续给多个变量赋初值。 如下述说明是错误的: int a=b=c=5 必须写为 int a=5,b=5,c=5; 而赋值语句允许连续赋值, 如 int a,b; a=b=5;D: 应该为 b=(int)x ...

下面的选项中正确的赋值语句是(char a[5],*p=a;)()。 A p=“abcd...
答案是a 主要考核你对变量赋值时的对等关系;a p=“abcd”;p是字符型指针,将“abcd”的地址给了p,也就是p指向“abcd"的首地址,也就是 指向‘a'的地址;b a=“abcd”;a是字符数组的地址,不可赋值;c p=“abcd”;p是字符,不能将字符串赋给它,若是*p='a',则正确。

int a=b=5;这个语句是否正确
不正确,规定变量定义时不能这样赋值,必须分开。正确的是:int a = 5, b = 5;语法是这样的,没有道理可讲。但若不是在定义时则可以这样赋值,比如:int a, b;a = b = 5;

a=b=5,c=b+2是正确的赋值语句吗
是的这道题是一道编程的赋值语句,但是这一句话是错的。根据题意可知,他是要将5这个数赋值给b,然后将b的值赋值给a。我个人建议这道题可以分两行来写,第一行写b=5,第二行写a=b,这样就实现了五到a之间的赋值。无论是高级程序语言c,还是高级语言c++,均会应用到这种语句。

相似回答