我刚刚安装了visual studio 2013,并尝试了一个简单的代码。所以我写下这个:
int main(void) {
int length = 0;
int *array ;
printf("Enter the number of input: ");
scanf_s("%d", &length);
printf("%d", length);
for (int i = 0; i < length; i++){
scanf_s("%d", array + i);
}
printf("shoting ........ ");
getc;
return 0;
}
当我编译这段代码时,它会说局部变量&#34; array&#34;未初始化。 我错过了什么吗?
答案 0 :(得分:1)
语句int *array ;
声明了一个指针。但你不知道它指向哪里。您可以使用malloc()
等内存分配函数分配一些空间,或者使其指向其他预先分配的空间。当你要求用户输入长度时(即在编译时不知道你的内存需求),动态内存分配就像malloc()
一样。
答案 1 :(得分:1)
注意:如果您使用C语言编译而不是C ++,则此答案适用
int *array;
声明类型为int*
的指针。由于它没有初始化,它指向一些随机位置。这是编译器试图告诉你的。只需使用malloc
动态分配内存。添加
array=malloc(length*sizeof(int));
在第一个scanf_s
之后分配足够的内存。请注意,您需要包含stdlib.h
才能使用malloc
也改变
getc;
要
getchar();
最好检查malloc
,scanf_s
等的返回值,看看它们是否成功。
答案 2 :(得分:0)
您需要初始化数组 比如
int *array = maloc(sizeof(int) * 100);
或
int *array = new int[];