理解char *到int *转换及其含义

时间:2017-04-02 00:51:53

标签: c++ c casting

我有以下简单的代码,

unsigned long the_function(const char* p){
        int* ip = (int*)p;
        printf("%d\n",ip);
}

我知道第一线投射意味着更少,但代码给了我。

现在,当我刚刚通过" a"到函数我得到恒定输出

4196024

有人可以向我解释这是什么意思。

2 个答案:

答案 0 :(得分:1)

它正在打印字符串的地址。

答案 1 :(得分:0)

您正在尝试打印类型为pi的{​​{1}}指针的地址。地址用8个字节表示,但是int可以用4个字节表示,因此当你尝试使用(int *)打印pi时,只打印一部分指针。正如使用%d指出Remy Lebeau是打印指针地址的正确方法。

顺便说一下,您将%p指针转换为char *类型,但您永远不会尝试访问int *所指向的值,以防这是什么你试图这样做。