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,想知道为什么 展开
答案是A,想知道为什么 展开
1个回答
展开全部
看定义,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。
首先程序运行后,系统会给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。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询