下面的代码出了什么问题?我需要将指针*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;
}
除了一行(概念),一切都很好。
公告线路为:
scanf("%d",number[i]);
并且应该替换为:
scanf("%d", *number+i);
因为我们分配的变量是一个指针,我们应该这样使用他,我们应该转到分配变量内部的"i"地址,并扫描到他。
当然,你可以继续使用"数组"风格的用法,语法如下:
scanf("%d", &(*number)[i]);
p.S
不要忘记在使用结束时释放分配的资源,尽管这种小程序会在回显结束时退出,但在使用结束后始终释放资源仍然是一种很好的做法。