c - (1)在函数 ‘main’ :(2) warning: format ‘%d’ expects argument of type ‘int’ , 中,但参数 2 的类型为 ‘int *’ [-Wformat]

标签 c pointers printf

我的代码有什么问题吗?

  #include<stdio.h>
  int main(void){
        int a;
        int *p;
        p=&a;
        printf("%d\n",p);
   }

最佳答案

printf() 中的

%d 格式说明符需要一个 int 参数。在您的代码中,您传递了一个int *。您需要:

  • 如果您想打印指针指向的内存位置中存储的值,则取消引用指针以获取 int 类型。
  • 如果要打印指针,请使用 %p 格式说明符并将参数转换为 void *

它调用undefined behavior将错误类型的参数传递给任何格式说明符。

关于c - (1)在函数 ‘main’ :(2) warning: format ‘%d’ expects argument of type ‘int’ , 中,但参数 2 的类型为 ‘int *’ [-Wformat],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40799739/

相关文章:

c++:结构中的int值无缘无故地改变值

c - 指向字符串的指针数组

c - 用C实时写入文件

c - 为什么输出文件损坏/充满垃圾? (期待数字)

c - Linux C socket服务器printf问题

c - struct 在 C 中的位置

c - getaddrinfo 似乎在 Windows 和 Ubuntu 之间返回不同的结果?

c - 从网页内部链接获取值

c# - 如何获得固定的缓冲区长度?

c++ - Opengl 顶点属性跨度