【发布时间】:2016-10-19 14:36:11
【问题描述】:
我知道变量指针。
int x = 10;
int *ptr = &x;
在这些表达中涉及三件事:
-
x占用 2 字节内存,因为它是一个整数。 -
ptr也占用 2 个字节。 -
如果
x的内存地址是1004,那么ptr会存储1004。
在这些示例中,每当我们在程序中使用*ptr 时,它都会给我们一个存储在内存地址 - 1004 的值
但是在结构中会发生什么? 举个例子:
struct book {
int a;
int b;
}
struct book str1, str2;
struct book *ptr = &str1;
我对这个例子有三个问题:
-
ptr如何保存str1的完整地址? -
指向变量的指针和指向内存中完整结构的指针有什么区别?
-
ptr需要多少字节? -
ptr有会员吗?如果它有成员,那么它将有什么类型的成员? (指针或变量)
还有一件事——用类的对象代替它做什么
【问题讨论】:
-
Int实际上是什么?我从 c++ 标准中不知道这一点。 -
请注意,在 64 位机器中 int* 的大小需要 8 个字节而不是 4 个。
-
@HarshitPanchal “我现在不编译此代码......”如果您想要简洁和有用的答案,请发布minimal reproducible example。提供狂热的类型并不实用。
-
@HarshitPanchal 另请注意:每个问题一个问题!像您这样的东西不适合此处的预期常见问题解答格式。
-
@πάντα 但是耶稣,如果我写 Int 而不是 int 有什么关系,人们已经明白我在说什么
标签: c++ pointers memory structure