gpt4 book ai didi

c - 编译器为限制指针指向的内存而采取的操作

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:15 24 4
gpt4 key购买 nike

在这段代码中(暂时保留严格的别名):

 #include<stdio.h>

int main(void)
{
int i=10;
void *ptr=&i;
printf("%lu\n",sizeof(ptr));
printf("%d\n",*(int *)ptr);
return 0;
}

它给出 sizeof(void*) 作为 8,但是当它在类型转换为 int* 后被取消引用时,它准确地打印出分配给变量 i 的数字。

编译器如何推送/限制大小为 8 字节的指针指向接下来的 4 个字节(sizeof(int) 在我的系统上)?

最佳答案

我觉得8个字节是为了保存“i”(int i =10;)在内存中的地址,所以不代表你要保存什么样的数据,只是保存地址内存位置它需要 8 个字节来适应任何需要转换的数据类型

关于c - 编译器为限制指针指向的内存而采取的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52455851/

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