【问题标题】:Scanf into double pointer扫描成双指针
【发布时间】:2020-02-05 17:41:40
【问题描述】:

你能在scanf之后得到双指针输入吗?这是错的吗?我已经在主函数中分配了数组。

void input(int **array, int x, int y){
        int s,t;

        printf("array element:\n");
        for(s = 0; s < x; s++){
                for(t = 0; t < y; t++){
                       scanf("%d", array[s][t]);
                }
        }
} ```

【问题讨论】:

  • **array 不是数组
  • 是的,但是array[s][t]int,而scanf需要的是对象的地址,而不是对象本身,所以使用&amp;array[s][t]int *)。跨度>
  • 这只是一个错字,你错过了&amp;
  • gcc -Wall -Wextra编译你会看到错误。
  • malloc到底做了什么?如果它是int 的单个二维数组的空间,则int **array 参数将与它不兼容。它需要一个int * 数组(指向第一个元素的指针),每个int * 都指向一个int 数组。

标签: c segmentation-fault double-pointer


【解决方案1】:

scanf 必须传递要写入的对象的地址。如果要将值扫描到array[s][t],则必须传递其地址&amp;array[s][t]。将scanf("%d", array[s][t]); 替换为scanf("%d", &amp;array[s][t]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2015-04-21
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 2013-12-18
    相关资源
    最近更新 更多