Ale*_*Dan 3 c++ arrays chat null-character
我有两个关于char数组的问题.
从下面的代码开始,既然arr是const,为什么编译器没有给我一个错误,因为我正在重写它?
char arr[5]; // arr is a const pointer to (*)[5] array
cin>>arr; //
Run Code Online (Sandbox Code Playgroud)当我初始化一个这样的char数组时:
char arr[5]={'h','i'};
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
cout << arr << "something here \n";
Run Code Online (Sandbox Code Playgroud)
它会打印出来hisomething here.我以为它应该打印出来
hi something here
Run Code Online (Sandbox Code Playgroud)
有3个witespaces.
但如果我这样做:
for(int i = 0; i < 5; i++){
cout << arr[i];
}
Run Code Online (Sandbox Code Playgroud)
它会打印出3个空格.
第二种情况似乎证明编译器不添加任何空字符.那么编译器如何忽略3个空格呢?
const,因为没有const限定符.0.0用于终止C字符串,而不是空格.至于你的索赔,那for(int i=0;i<5;i++){ cout << arr[i]; }印刷的空白 - 你是怎么检查的?
为了我:
#include <iostream>
int main(){
char arr[5]={'h','i'};
for(int i=0;i<5;i++){ std::cout << arr[i]; }
std::cout << "X" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
打印:
hiX
Run Code Online (Sandbox Code Playgroud)
和hexdumped:
$ ./t | hexdump -Cv
00000000 68 69 00 00 00 58 0a |hi...X.|
00000007
Run Code Online (Sandbox Code Playgroud)
'\0'印有字符.它们的显示似乎取决于操作系统.但它们不是空白.