我现在正在重新研究C,并且一直有人告诉我,在C中,我们必须定义将具有数组的最大大小,以便可以在内存中保留足够的空间。我的意思是:
#include <stdlib.h> //Para función malloc
int main() {
int *enteros = malloc( sizeof(int) * 10 ); //An array of 10 integers
int i;
for(i = 0; i < 100; i++) {
enteros[i] = i*10;
printf( "-> enteros[%d] = %d\n", i, i*10 );
}
}
但是,以下代码运行良好(这里我没有告诉最大大小,我只是为int指针分配了足够的内存,而我只是无法找到此处发生问题的答案。
#include <stdio.h>
#include <stdlib.h>
int main() {
int *enteros = malloc( sizeof(int) );
int i;
for(i = 0; i < 2000; i++) {
*(enteros++) = i*10;
printf( "-> enteros[%d] = %d\n", i, i*10 );
enteros++;
}
}
似乎我可以很好地管理动态数组,而不必为数组重新分配内存并被迫引入起始大小,但是我觉得我缺少了一些东西。
尝试此代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *enteros = malloc( sizeof(int) );
int *a = malloc( sizeof(int));
int i;
*a = 4;
for(i = 0; i < 2000; i++) {
*(enteros++) = i*10;
printf( "-> enteros[%d] = %d\n", i, i*10 );
enteros++;
}
printf( "a = %d\n", *a);
}