c语言,下面选项中正确的赋值语句是(设char a[5],*p=a;)?

Ap="abcd";Ba="abcd";C*p="abcd";D*a="abcd";答案是A,想知道为什么... A p="abcd"; B a="abcd"; C *p="abcd"; D *a=" abcd" ;

答案是A,想知道为什么
展开
 我来答
X_earth
2021-03-30 · TA获得超过248个赞
知道小有建树答主
回答量:204
采纳率:73%
帮助的人:65.9万
展开全部
看定义,a是数据首地址,p为指针,指向数组a;
首先程序运行后,系统会给a分配5字节大小的内存,假设内存地址为a1,那么a=a1;
*p = a执行后,p=a1;
题目中,都是赋值"abcd",假设操作系统对"abcd"分配的地址是a2;
A: 相当于p=a2,相当于对p重新赋值,不存在任何问题。
B:相当于a=a2,与a=a1冲突,因为数组被分配地址后是不允许改变的。
C:*p相当于a[0],所以语句等效于a[0]="abcd",显然不对。
D:等效于选项C。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式