gpt4 book ai didi

将 int 转换为 int* 然后再转换回 int

转载 作者:太空狗 更新时间:2023-10-29 14:51:04 26 4
gpt4 key购买 nike

我在这里遗漏了一些明显的东西,但请考虑以下内容,

int k = 10;
int *p = &k;
int i = (int)p;

以上产生,

warning: cast from pointer to integer of different size

和后续,

int k = 10;
int *p = &k;
int i = p;

原因,

warning: initialization makes integer from pointer without a cast

一些谷歌搜索引导我,

Converting a pointer into an integer

建议使用 uintptr_t,

int k = 10;
int *p = &k;
int i = (uintptr_t)p;

以上工作没有错误没有警告。所以我的问题是 k 是一个 int,p 是一个指向 k 的 int 指针,为什么我会得到一个错误取消引用 p?

最佳答案

int k = 10;
int *p = &k;
int i = *p;

注意最后一行 p 之前的 *。取消引用指针以获取它指向的 int。

编辑:我不太熟悉 uintptr_t,但我运行了代码 int i = (uintptr_t)p;存储到 i 的结果是 k 的内存地址,而不是 10。强制转换告诉编译器你真的想把地址变成一个整数(所以没有警告;因为你坚持要编译器你知道什么你正在做)但不会取消引用指针。

关于将 int 转换为 int* 然后再转换回 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com