关于指针类型的问题

proghua 2011-09-14 08:46:30
#include <stdio.h>

int main(void)
{
char *p = 0;

printf("%p", p);
return 0;
}


p类型是char *, 0是整型,为什么char *p = 0;这句编译连个警告没有
...全文
61 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
坏男孩 2011-09-14
  • 打赏
  • 举报
回复
那个字符的ASCII 码就是个整形,字符和整形是可以完全转化的。所以不会报任何警告
proghua 2011-09-14
  • 打赏
  • 举报
回复
Since pointers and integers are now considered incommensurate, the only integer value that can
be safely converted to a pointer is a constant expression with the value 0. The result of
converting any other integer value, including a non-constant expression with the value 0, to a
pointer is implementation-defined.
defy_ 2011-09-14
  • 打赏
  • 举报
回复
此外还可以使用从C中继承的NULL

int *pi = NULL; //等价于int *pi = 0;
defy_ 2011-09-14
  • 打赏
  • 举报
回复
“将int型变量赋给指针是非法的,尽管此int型变量的值可能是0。但允许把数值0或在编译时可获得0的const变量赋值给指针。”——C++ primer中提到的。
proghua 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gold_water 的回复:]

0地址给P,这个有什么错吗!?P是字符指针,也就是地址,好好想下
[/Quote]
类型不一致
turing-complete 2011-09-14
  • 打赏
  • 举报
回复
指针就是地址,整数完全可以表示地址,我用过的编译器都不给警告的。
gold_water 2011-09-14
  • 打赏
  • 举报
回复
0地址给P,这个有什么错吗!?P是字符指针,也就是地址,好好想下

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧