使用malloc在函数内部传递指针的地址并使用向量语法?

时间:2013-08-14 00:50:59

标签: function pointers malloc

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

1 个答案:

答案 0 :(得分:1)

除了一个行(概念)之外,一切都很好。

Problamatic line是:

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

应该替换为:

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

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

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

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

<强> P.S
不要忘记在使用结束时释放分配的资源,除了在回声结束时退出的这种小程序,在使用结束时始终释放资源仍然是一个好习惯。