整数指针未初始化

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();

检查 mallocscanf_s 等的 return 值以查看它们是否成功也是一个好主意。