【发布时间】:2018-02-20 17:09:20
【问题描述】:
为什么在使用指针时不需要指定数组大小?
我是 C 的新手,并试图更好地了解它的工作原理。
如果我使用指针来声明数组 greet 我不需要指定数组大小。 如果我拿走指针,我需要定义数组的大小。
为什么编译器在使用指针声明 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);
}
【问题讨论】:
-
“如果我使用指针来声明数组greet” - 不,指针不是数组,你没有在那里“声明数组”。您创建了一个变量,它可以指向某个东西(即保存一个地址),但它现在没有指向任何有意义的东西。
标签: c arrays string pointers memory-management