c语言题 D选项为什么错?
structdata{inta;chars[10];}da[3],*p=da;下面不正确的赋值语句为()A、p->a=10;B、p->s[2]=’a’;C、(*da).s...
struct data
{ int a;
char s[10];
}da[3],*p=da;
下面不正确的赋值语句为 ( )
A、p->a=10; B、p->s[2]=’a’; C、(*da).s[1]=’b’; D、p->s="abcd"; 展开
{ int a;
char s[10];
}da[3],*p=da;
下面不正确的赋值语句为 ( )
A、p->a=10; B、p->s[2]=’a’; C、(*da).s[1]=’b’; D、p->s="abcd"; 展开
展开全部
C语言中,类似D选项的字符串赋值只能在char数组定义时进行,比如:
char s[10] = "abcd";
若不是定义,比如D选项:p->s="abcd"; 就相当于用"abcd"串的首地址覆盖s数组的首地址,这是编译错误。
对char型指针则没有上述限制:
char* sp;
sp = “abcd”;
这样使用是正确的,因为sp是char型指针,正好可以接收"abcd"串的首地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字符串赋值不能这样写,要使用函数strcpy(p->s,"abcd");
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对电脑不是很懂,不好意思帮不到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询