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;
}
`