puts函数出现warning: passing argument 1 of ‘puts’ from incompatible pointer type(警告:从不兼容的指针类型传递“puts”的参数1)
代码:
1 /************************************************************************* 2 > File Name: ptr_variable.c 3 > Author: Mr.Yang 4 > Purpose:演示指向变量的指针 5 > Created Time: 2017年06月03日 星期六 08时47分33秒 6 ************************************************************************/ 7 8 #include <stdio.h> 9 #include <stdlib.h> 10 11 int main(void) 12 { 13 int a = 1000; 14 printf("a的地址为:%d\n",&a); 15 16 int *p; 17 puts(p); 18 printf("指针p的地址为:%d\n",&p); 19 20 return 0; 21 }
错误完整描述:
1 ptr_variable.c: In function ‘main’: 2 ptr_variable.c:17:7: warning: passing argument 1 of ‘puts’ from incompatible pointer type 3 puts(p); 4 ^ 5 In file included from ptr_variable.c:8:0: 6 /usr/include/stdio.h:695:12: note: expected ‘const char *’ but argument is of type ‘int *’ 7 extern int puts (const char *__s); 8 ^
由描述可知,puts需要const char *但是参数给了 int *,通过查询puts函数的用法(如下:附)可知,里面是一个字符串参数,不是int型参数,所以上面的代码可把int *p改为char *p即可编译通过。
附:puts()函数用于将一字符串放到标准输出流(stdout)中,并在最后增加换行符 '\n',其函数原型如下:
int puts(char *string);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程