【发布时间】:2019-06-18 02:58:43
【问题描述】:
int array[100];
int *array;
我对@987654323@ 和int *array 之间的区别感到困惑。
基本上,当我执行int array[100](100 这只是int 的一个示例)时,我只是在内存中保留了 100 个整数的空间,但我可以执行int * array 并且我没有指定任何这个数组的大小类型,但我仍然可以做array[9999] = 30,这仍然有意义。
那么这两者有什么区别呢?
【问题讨论】:
-
“我没有为这个数组指定任何类型的大小” 你必须这样做,通常会按照
int *array = malloc(sizeof(int)*10000)的方式做一些事情,这里是10000是大小。如果您不使指针指向有效内存,则array[9999]=30;是未定义的行为,可能会使您的程序崩溃或导致其他错误/不可预测的结果。 -
对于初学者,
int *array必须手动进行 malloc() 编辑。 -
哦,非常感谢
-
我建议c-faq的第4、5、6和7节。
-
@JoaoParente:您可以通过单击分数下方的灰色复选标记来接受其中一个答案。
标签: c arrays pointers memory-management