问条二级的题目(简单型)

来源:百度知道 编辑:UC知道 时间:2024/06/05 20:19:47
以下不能正确进行字符串赋初值的语句是

A) char str[5]="good!"; B) char str[]="good!";

C) char *str="good!"; D) char str[5]={‘g',‘o',‘o',‘d'};
答案是A,我原来选的是C,请热心的朋友解答一下

A) char str[5]="good!"; 这是字符串整体赋值 ,在最后要加'\0',A中定义的数组下标为5只能容下5 个字符,可是good!已经为5个了,在加上'\0'就溢出了 ,但是要这样赋值就没有问题了a[5]={'g','o','o','d','!'}

"good!"是字符串,char 是字符型

b c等价 c语言默认 char* 就是char[]

A显然是错- -"good!"是string不是char *

字符串的末尾需要有一个结束标志 '\0'

你先看A,字符串为"good!"为5个字符,再加上一个'\0',就应该是6个字符了,可是只申请了5个字符大小的长度 char str[5],所以这个是不对的。

答案是A
str申请的大小是5
而字符占用的空间是'g','o','o','d','!','\0',溢出。