2016-02-13 51 views
0

我是新与C++和我心中已经编写这个程序:错误时打印字符数组,而不指数CPP

#include <iostream> 
#include <string> 

using namespace std; 

void main() { 
    char s[2] = { 'a', 'l' }; 
    cout << s << endl; 
} 

当我运行此代码,我得到这样的错误输出:

al╠╠╠╠╠╠H²O 

为什么?因为当我学习C++时,当我打印字符数组时,我会看到数组元素,比如字符串。

+0

's'不是零终止。当传递给'cout'时,它会衰变成一个'char *',一个C风格的字符串。它需要零终止,因为没有附加长度信息。 – IInspectable

回答

1

你的char数组不是零终止,std :: cout不知道你的字符串结尾在哪里。

你需要这样做:

char s[3] = { 'a', 'l', '\0'};