好奇心与c中的向量

gia*_*otb 1 c vector

我在C中写了一个小程序,我预计向量会出错.

#include <stdlib.h>
#include <stdio.h>

main(){
       int vet[0];
       vet[0] = 1;
       vet[1] = 2;
       vet[2] = 2;
       vet[3] = 2;
       vet[4] = 2;
       vet[5] = 2;
       vet[6] = 2;
       vet[7] = 2;
       int x;
       for(x=0;x<19;x++) printf("%d\n", vet[x]);


       system("pause");
}
Run Code Online (Sandbox Code Playgroud)

在编写这段代码之前,我认为要在向量中添加一个元素,而且他的大小,我应该调用该malloc函数,但后来我发现,如果没有该malloc函数,代码也能正常工作.所以我的问题是,为什么我应该使用malloc函数,如果在这种情况下它没用?为什么在初始化时我应该写一个向量的维度?

Mar*_*sen 5

因为,通过写入您从未分配的内存,您将导致未定义的行为.有时候它会起作用,有时却不起作用,有时会让你的狗爆炸.