【问题标题】:warning: format ‘%d’ expects type ‘int *’, but argument 2 has type ‘int **’警告:格式“%d”需要类型“int *”,但参数 2 的类型为“int **”
【发布时间】:2012-10-14 03:29:10
【问题描述】:

C新手,我有这个功能:

void getNum(int *n) {
  scanf("%d", &n);
}

主要是:

int main() {
  int someNum;
  getNum(&someNum);
  return 0;
}

此错误的“int **”部分究竟来自哪里,我传递信息的方式是否还有其他问题?

【问题讨论】:

  • 您在普通的int 前面使用& 将其转换为int *。在这里,您已经有了一个 int *,因为它是您的函数的输出参数,所以您不需要 &(就像您将 & 放在数组前面一样)。

标签: c pointers scanf


【解决方案1】:

唯一的问题是将&n 传递给scanf:n 已经是一个指针,因此您的scanf 调用正在传递一个指向该指针的指针,因此会出现警告。

使用:scanf("%d", n);

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2015-02-27
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多