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

以下选项中正确的语句组是()A.chars[];s=”BOOK!”B.char*s;s={“BOOK!}C.chars[10];s=”BOOK!”D.char*s;s=”BOOK!”简单讲解一下

题目详情
以下选项中正确的语句组是()
A.char s[]; s=”BOOK!”
B.char *s; s={“BOOK!}
C.char s[10]; s=”BOOK!”
D.char *s; s=”BOOK!”
简单讲解一下
▼优质解答
答案和解析
答案是D
A,C不对,因为s是指向了内存的指针,而且指定了大小,数组初始化楼主应该了解吧,肯定不是这样。
B不对是因为C语言没有这样初始化数组的(这就是语法),而且貌似还少些了一个引号
D是C语言允许的,实际操作是将这个字符数组(串)的首地址复制给s,s是一个指针,指向了这个字符串,访问时按地址访问下去,直到遇到'\0'作为结束,内存未知容易出现问题
char s[]="BOOK!";
char s[]={'B','O','O','K','!'}
char s[10];strcpy(s,"BOOK!");
char *s="BOOK!" 或char *s;s="BOOK!";
//这条看似无理,但是是C语言支持的,而且使用广泛
都是正确的
如果是我使用的话会是:
char s[10+1];
memset(s,0,sizeof(s));
strcpy(s,"BOOK!");
没别的,安全