如果a有一个结构说
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++中,我们有这个指针来给ob1.a和ob2.a赋值。在c中,编译器如何知道在哪个对象中存储值?
最佳答案
ob1
决不是指针。这是一个结构。
由于a
是struct first
的第一个字段,&ob1
和&ob1.a
是相同的地址(但有不同的类型)。
在C语言中,编译器知道要存储到哪个对象,因为您必须告诉它在你的例子中,你分别说了ob1.a
或ob2.a
。
编者按:使用%p
打印指针,并且根本不尝试将结构传递给printf
。
关于c - 在结构上如何存储值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18212072/