C语言 我在 malloc 和 realloc 理解上犯了什么错



我试图制作一个在程序运行时调整大小的数组。我已经了解了 malloc 和 realloc 函数,但似乎我显然弄错了什么。这是我编写的函数,它根据循环产生的周期数创建一个数组。

int* flexibleArray() {
    int *arrayFlex = NULL;
    int number=0, cnt=0;
    while (number!=-1) {
        printf("nInsert the variable: ");
        scanf("%d", &number);
        if (number==-1){
            break;
        }
        cnt+=1;
        arrayFlex = realloc(arrayFlex, cnt * sizeof(int));
        arrayFlex[cnt-1] = number;
    }
    return arrayFlex;
}

我试图阅读我在互联网上找到的有关它的文档,然后我无法在重新分配后检索新数组。

int *array;
    array = flexibleArray();
    int arraySize = (sizeof(array))/(sizeof(int));
    for(int i=0; i<arraySize; i++) {
        printf("%d ", array[i]);
    }

基本上,这就是我测试函数的地方,看看它是否做了它应该做的事情。

我是C的新手,对不起,伙计们。谢谢

这样的事情应该可以做到。

int* flexibleArray() {                                                          
    int *arrayFlex = NULL;                 // needs to be a pointer             
    int number=0, cnt=0;                                                        
    while (number!=-1) {                                                        
        printf("nInsert the variable: ");                                      
        scanf("%d", &number);                                                   
        if (number==-1){                                                        
            break;                                                              
        }                                                                       
        cnt+=1;                                                                 
        arrayFlex = realloc(arrayFlex, cnt * sizeof(int));                      
        arrayFlex[cnt-1] = number;                                              
    }                                                                           
    return arrayFlex;                                                           
}     

编辑:修正错别字。

相关内容

  • 没有找到相关文章

最新更新