下面的代码出了什么问题?我需要将指针* A的地址发送到函数,用里面的scanf读取一些数字,返回main并打印在该函数中读取的数字。
void create_number_vector(int **number)
{
(*number) = (int*)malloc(5*sizeof(int));
int i;
for(i=0; i<5; i++){
scanf("%d",number[i]);
}
}
int main(void){
int i, *A;
create_number_vector(&A);
for(i=0; i<5; i++){
printf("%d",A[i]);
}
return 0;
}
答案 0 :(得分:1)
除了一个行(概念)之外,一切都很好。
Problamatic line是:
scanf("%d",number[i]);
应该替换为:
scanf("%d", *number+i);
因为我们分配的变量是一个指针,我们应该这样使用他,我们应该去分配变量里面的'i'地址并扫描到他。
当然,您可以继续使用“数组”样式用法,使用以下语法:
scanf("%d", &(*number)[i]);
<强> P.S 强>
不要忘记在使用结束时释放分配的资源,除了在回声结束时退出的这种小程序,在使用结束时始终释放资源仍然是一个好习惯。