整数指针未初始化

时间:2015-02-22 07:03:10

标签: c pointers

我刚刚安装了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;未初始化。 我错过了什么吗?

3 个答案:

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

最好检查mallocscanf_s等的返回值,看看它们是否成功。

答案 2 :(得分:0)

您需要初始化数组 比如

int *array = maloc(sizeof(int) * 100);

int *array = new int[];