整数指针未初始化
integer pointer is not initialized
我刚刚安装了 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;
}
当我编译这段代码时,它说局部变量 "array" 未初始化。
我错过了什么吗?
您需要初始化数组
比如
int *array = maloc(sizeof(int) * 100);
或
int *array = new int[];
语句int *array ;
声明了一个指针。但是你不知道它指向哪里。您可以使用 malloc()
等内存分配函数分配一些 space 或使其指向其他一些预分配的 space。当您向用户询问输入长度时(即在编译时不知道您的内存要求),像 malloc()
这样的动态内存分配将是可行的方法。
注意:如果您使用 C 而不是 C++ 进行编译,则此答案适用
int *array;
声明类型为int*
的指针。由于它没有被初始化,它指向某个随机位置。这就是编译器试图告诉你的。只需使用 malloc
动态分配内存。添加
array=malloc(length*sizeof(int));
刚好在第一个scanf_s
分配足够的内存之后。请注意,您需要包含 stdlib.h
才能使用 malloc
.
也改
getc;
到
getchar();
检查 malloc
、scanf_s
等的 return 值以查看它们是否成功也是一个好主意。
我刚刚安装了 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;
}
当我编译这段代码时,它说局部变量 "array" 未初始化。 我错过了什么吗?
您需要初始化数组 比如
int *array = maloc(sizeof(int) * 100);
或
int *array = new int[];
语句int *array ;
声明了一个指针。但是你不知道它指向哪里。您可以使用 malloc()
等内存分配函数分配一些 space 或使其指向其他一些预分配的 space。当您向用户询问输入长度时(即在编译时不知道您的内存要求),像 malloc()
这样的动态内存分配将是可行的方法。
注意:如果您使用 C 而不是 C++ 进行编译,则此答案适用
int *array;
声明类型为int*
的指针。由于它没有被初始化,它指向某个随机位置。这就是编译器试图告诉你的。只需使用 malloc
动态分配内存。添加
array=malloc(length*sizeof(int));
刚好在第一个scanf_s
分配足够的内存之后。请注意,您需要包含 stdlib.h
才能使用 malloc
.
也改
getc;
到
getchar();
检查 malloc
、scanf_s
等的 return 值以查看它们是否成功也是一个好主意。