答案是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!");
没别的,安全
C
D