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);