-1

下面的代码有什么问题?我需要将指针 *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;
}
4

1 回答 1

1

除了一条线(概念),一切都很好。

问题线是:

scanf("%d",number[i]);

并且应该替换为:

scanf("%d", *number+i);

因为我们分配的变量是一个指针,我们应该这样使用他,我们应该去分配变量内部的'i'地址并扫描到他。

当然,您可以使用以下语法继续使用“数组”样式用法:

scanf("%d", &(*number)[i]);

PS
不要忘记在使用结束时释放分配的资源,尽管这种小程序在回显结束时退出,但始终在使用结束时释放资源仍然是一个好习惯。

于 2013-08-14T01:29:25.000 回答