char *string1 = "foo";
printf("%p\n",string1);
printf
这里总是提示Format specifier '%p' requires 'void *' argument instead of 'char *
。string1 不就是个指针吗?输出也的确没问题。求教。
1
ysc3839 2018-11-01 21:57:04 +08:00
已经说得很明白了 requires 'void *' argument instead of 'char *'
|
2
Monad 2018-11-01 22:09:12 +08:00 2
https://stackoverflow.com/questions/24867814/printfp-and-casting-to-void
int* 和 void* 纯理论上来讲 这俩不一定要有相同的表示 |
3
Tyanboot 2018-11-01 22:59:24 +08:00
c 里面 void*确实是“万能指针”,这样传是不会有 warning 的。不过 c++里面是会有 warning 的。
|
4
vsomeone 2018-11-02 00:17:48 +08:00
不知道你的编译器是什么,但是 Linux 上 gcc 这句话没有报错或警告
|
5
codechaser OP @vsomeone mingw
|
6
codechaser OP @vsomeone ide 用的 clion
|
7
codechaser OP @ysc3839 时很明白了,那请问一下为何需要 void * 不是 char *呢?
|
8
codechaser OP @Monad 谢谢你!
|
9
ysc3839 2018-11-02 10:11:35 +08:00 via Android
@codechaser 这就要看相关标准了吧?我也不知道。
|