在传递指针地址的函数内部使用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;
}

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

公告线路为:

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

并且应该替换为:

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

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

当然,你可以继续使用"数组"风格的用法,语法如下:

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

p.S
不要忘记在使用结束时释放分配的资源,尽管这种小程序会在回显结束时退出,但在使用结束后始终释放资源仍然是一种很好的做法。

相关内容

  • 没有找到相关文章

最新更新