#include <stdio.h>
int main()
{
int *a = 11;
printf(a);
return 0;
}
为什么打印a时候 报错说参数不对的样子
printf(a);
->
printf("%p", a);
prinf是c语言的格式化输出函数,注意这个函数的使用,一般调用方式为printf("<格式化字符串>", <参量表>),你忘了前面的格式化参数字符串,比如int输出用%d 指针输出用%p
先看修改后的代码:
#include <stdio.h>
int main()
{
int a = 11; // 指针类型错误,应该定义为int类型
printf("%d", a); // printf函数参数类型错误,应该使用占位符格式化输出
return 0;
}
首先,11是整型字面量,但你用了 int 指针类型定义a。
另外在使用printf函数输出a时,应该使用占位符格式化输出,而不是直接将变量名作为参数传递给printf函数。
1.现在定义的a是一个指针,给指针赋值代表的是给a这个指针一个9的地址。这里其实已经有问题了;
2、printf打印是格式化语句,printf(a),格式上也是错误的。
在这段代码中,您将一个整数值 11
赋值给指针变量 a
,这是不合法的,因为指针变量需要存储一个内存地址,而不是一个整数值。因此,当您尝试使用 printf()
函数打印指针变量 a
时,会发生错误。
为了解决这个问题,您可以将指针变量 a
初始化为 NULL
或一个有效的内存地址,例如:
int *a = NULL; // 初始化为 NULL
int b = 11;
a = &b; // 初始化为变量 b 的地址
printf("%p", (void*)a); // 使用 %p 格式说明符打印指针变量 a
在上面的代码中,我们首先将指针变量 a
初始化为 NULL
,然后将其赋值为变量 b
的地址。最后,我们使用 %p
格式说明符来打印指针变量 a
的值,并将其强制转换为 void*
类型。这样可以保证 printf()
函数正确地打印指针变量的值。