gpt4 book ai didi

c++ - 编译器如何知道指针的类型

转载 作者:行者123 更新时间:2023-11-30 02:31:40 25 4
gpt4 key购买 nike

double d = 1.1;
double *p = &d;
cout << *p;
int i = 1;
int * q = &i;
cout << *q;

在上面的代码中,当我们取消引用指针p(cout<<*p;) 时,编译器如何知道*p 的大小?我的意思是,如果 double 的大小是 8 并且 d 的地址从 1000 开始,那么编译器如何知道它应该从 1000 到 1007 获取数据,而对于 *q,它应该占用 4 个字节?

由于 pq 的大小都是 4,我不知道编译器如何从指针中获取有关类型的信息。

最佳答案

澄清克里斯邮报。当您声明 double *p 时,您是在明确告诉编译器“我正在声明一个指向 double 的指针”。在编译期间,编译器会记住,在引用 p 的代码的每一部分(遵循作用域规则),p 是一个指向 double 的指针,并且通过扩展,p 是指向与 double 相同大小的内存位置的指针。所以在它看到 p 的任何地方,编译器都知道“p 是一个指向双倍大小的指针”。

关于c++ - 编译器如何知道指针的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37421879/

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