gpt4 book ai didi

c++ - 指向成员结构的指针如何工作?

转载 作者:行者123 更新时间:2023-11-28 01:48:20 24 4
gpt4 key购买 nike

我是 C++ 的初学者,我想问一下指向成员结构的指针是如何工作的。我这里有代码:

struct Node
{
int data;
Node* next; // next variable store address of Node.

void Print()
{
cout <<"Value in next variable is: " <<&next;
}
};

int main()
{
Node Sample;
sample.data = 5;
cout <<"Data is: " <<sample.data <<"\n";
sample.Print();
cout <<"Address of Sample is: " <<&Sample <<"\n";
}

输出:
数据为:5
下一个变量的值是:0xbf9b6758
样本地址为:0xbf9b6754

在这种情况下,指针变量 next&Sample 的地址不同。这是如何工作的?为什么他们有不同的地址?

最佳答案

查询答案:

Value in next variable is: 0xbf9b6758 
Address of Sample is: 0xbf9b6754

这 4 个步骤让您了解周围发生的事情?

第 1 步:首先声明结构变量 sample。

第 2 步:当样本被创建到内存中时,样本的成员被初始化为默认值。

第 3 步: 因为 next 是一个指针变量,所以它也会用一些垃圾值(即 Ram 中下一个未使用的地址)进行初始化。

第 4 步:下一个指针保存地址 -0xbf9b6758 因为,

“样本变量的大小 = 结构节点每个成员的大小之和”

=数据大小+下一个大小

= 2 + 2 => 4

KeyPoint --> next 的大小是 2 个字节,因为内存中的地址是无符号整数格式(数据类型)

因此,下一个变量被分配了与示例变量不同的地址。

关于c++ - 指向成员结构的指针如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43934425/

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