由于以下声明,您收到警告
printf("Name buffer address: %x\n", buffer); printf("Command buffer address: %x\n", c);
%x
期待一个unsigned int
,而你提供一个指针.
参考,C11
标准,章节§7.21.6.1
o,u,x,X
unsigned int参数在样式dddd中转换为无符号八进制(o),无符号十进制(u)或无符号十六进制表示法(x或X); [...]
提供无效参数会调用未定义的行为.
你应该%p
用来打印地址
p
参数应该是指针void
.[...]
并且将参数强制转换为void *
,因为对于指针类型,不会发生默认参数提升.
话说回来,
main()
应该int main(void)
至少符合标准.
你需要转发声明你的函数,bo()
因为隐式声明现在是坏的和非标准的.
要打印地址,请使用"%p"
而不是"%x"
.你还需要施展void *
printf("Name buffer address: %p\n", (void *) buffer);