早教吧 育儿知识 作业答案 考试题库 百科 知识分享

若有以下定义和赋值double*q,a=5.5;int*p,i=1;double*q,a=5.5;int*p,i=1;p=&i;q=&a;以下对赋值语A.*p=*q;改变i中的值。B.p=oxffd0;将改变p的值,使p指向地址为ffd0的存储单元。C.*q=*p;等同于a=i;D.*p=*q;是取q

题目详情
若有以下定义和赋值double *q,a=5.5; int *p,i=1; double *q,a=5.5;int *p,i=1; p=&i; q=&a; 以下对赋值语
A.*p=*q ;改变i中的值。
B.p=oxffd0;将改变p的值,使p指向地址为ffd0的存储单元。
C.*q=*p;等同于a=i;
D.*p=*q;是取q所指变量的值放在p所指的存储单元
选什么,为什么,请帮我解释一下,好吗?
谢谢
▼优质解答
答案和解析
A.*p=*q ;改变i中的值
是正确的,不过要对浮点型进行截取,i=5
B.p=oxffd0;将改变p的值,使p指向地址为ffd0的存储单元。
语法可以,因为p是指针类型,就是整型数值,用十六进制赋值是对的,但是这样赋值是危险的,
那段地址很可能是不确定值的地址,如果对p进行取值操作,将会出现非法操作
C.*q=*p;等同于a=i;
是正确的,a=1.000000
D.*p=*q;是取q所指变量的值放在p所指的存储单元
是错误的,应该是 复制q所指变量的值到p所指的存储单元
赋值语句是将右值信息复制给左值,不会改变右值信息