【发布时间】:2025-12-14 20:25:02
【问题描述】:
char ch[5] = {'a', 'b', 'c', 'd', 'e'};这没有显示任何错误但是 char ch[5] = "abcde" 显示错误。为什么?
#include <iostream>
using namespace std;
int main() {
char ch[5] = {'a', 'b', 'c', 'd', 'e'};
int i;
for( i = 0; ch[i] != '\0'; i++){
cout << ch[i] << ' ';
}
return 0;
}
输出:- a b c d e 在这种情况下,while 循环终止意味着存在空字符,但由于我给出了 5 的大小,所以它在哪里存储了这个空字符?
但是当我写这个程序时:-
#include <iostream>
using namespace std;
int main() {
char ch[5] = "abcde";
int i;
for( i = 0; ch[i] != '\0'; i++){
cout << ch[i] << endl;
}
return 0;
}
在这种情况下,它会显示错误:- 字符数组的初始化字符串太长 [-fpermissive] 请解释为什么会这样。
【问题讨论】: