我有以下简单的代码,
unsigned long the_function(const char* p){
int* ip = (int*)p;
printf("%d\n",ip);
}
我知道第一线投射意味着更少,但代码给了我。
现在,当我刚刚通过" a"到函数我得到恒定输出
4196024
有人可以向我解释这是什么意思。
答案 0 :(得分:1)
它正在打印字符串的地址。
答案 1 :(得分:0)
您正在尝试打印类型为pi
的{{1}}指针的地址。地址用8个字节表示,但是int可以用4个字节表示,因此当你尝试使用(int *)
打印pi
时,只打印一部分指针。正如使用%d
指出Remy Lebeau是打印指针地址的正确方法。
顺便说一下,您将%p
指针转换为char *
类型,但您永远不会尝试访问int *
所指向的值,以防这是什么你试图这样做。