gpt4 book ai didi

c - 在结构中如何存储值?

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

如果有一个结构说

struct first
{
int a;
int b;
};

现在如果我创建它的对象

int main(){
struct first ob1,ob2;

ob1.a=5;
printf("%u %u",&ob1,&(ob1.a)); //prints same address
printf("%d %d",ob1,(ob1.a)); // 5,garbage value
return 0;}

我的教授说 ob1 是一个指向结构的指针。我想知道 ob1 和 ob1.a 存储的是什么地址?

同样在 c++ 中,我们有 this 指针 来为 ob1.a 和 ob2.a 赋值。在 C 中,编译器如何知道在哪个对象中存储值?

最佳答案

ob1 绝不是指针。它是一种结构。

由于astruct first的第一个字段,所以&ob1&ob1.a是同一个地址(但有不同的类型)。

在 C 中,编译器知道要存储到哪个对象,因为您必须告诉它。在你的例子中,你分别说了 ob1.aob2.a

编者注:使用 %p 打印指针,根本不要尝试将结构传递给 printf

关于c - 在结构中如何存储值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212072/

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