在许多代码示例中,人们通常'\0'在创建一个新的char数组后使用,如下所示:
string s = "JustAString";
char* array = new char[s.size() + 1];
strncpy(array, s.c_str(), s.size());
array[s.size()] = '\0';
Run Code Online (Sandbox Code Playgroud)
我们为什么要'\0'在这里使用?
使用指针时为什么不需要指定数组大小?
我是C的新手,并试图更好地了解它是如何工作的.
如果我使用指针来声明数组问候,我不需要指定数组大小.如果我拿走指针,那么我需要定义数组的大小.
为什么编译器在使用指针声明char变量时不需要知道要分配的数组的大小,但是当我只声明一个char变量时它就会这样做.有点混淆为什么会这样.
这是我的示例代码:
int main()
{
char *greet; // Works fine.
// char greet; // Doesn't work. Crashes when entering text.
// char greet[]; // Doesn't work. Array size missing, won't compile.
// char greet[20]; // Works fine.
printf("Enter name\n>");
gets(greet);
printf("Hello %s", greet);
}
Run Code Online (Sandbox Code Playgroud)