发现这样一个简单的问题,代码如下:
int main(int argc, const char * argv[]) {
int *pr = 10;
printf("%d",pr);
int *p = (int *)10;
printf("%d\n",(int)p);
return 0;
}
运行后,结果如图:
警告如下:
啊哈!居然没有报错哟!搜索一下,有人这样说:“C允许把一个整数转换为任意类型的指针,同时允许把任何类型的指针转换为一个整数”;
上面仅仅是做的类型的转化,将整型强制转化为整型指针,再把整型指针转化为整型,不关乎指针。所以有如下:
int *pr = (int *)100;
printf("%d",*pr);
运行报错,