c语言使用malloc返回指针

146 阅读1分钟

c语言使用malloc返回指针注意事项

`

#include <stdio.h>
#include <stdlib.h>

int read(int **arr, int *num);

int main(int argc, char const *argv[]){

    int n;
    int *arr;
    read(&arr,&n);

    for(int i=0; i<n; i++){
        printf("%d ", *arr++);
    }

    free(arr);
    
    return 0;
}

int read(int **arr, int *n){
    int ret = -1;
    FILE *fp = fopen("./data.txt", "r+");

    if(fp){
        fscanf(fp, "%d\n", n);
        // *arr是数组的首地址 arr为数组首地址的存储地址
        *arr = (int *)malloc(*n * sizeof(int)); 

        for(int i=0; i<*n; i++){
            fscanf(fp, "%d ", *arr+i); // 注意对数组元素的赋值操作
        }
        ret = 0;
    }else{
        printf("open file fail\n");
    }

    return ret;
}

`