如果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决不是指针。这是一个结构。
由于astruct first的第一个字段,&ob1&ob1.a是相同的地址(但有不同的类型)。
在C语言中,编译器知道要存储到哪个对象,因为您必须告诉它在你的例子中,你分别说了ob1.aob2.a
编者按:使用%p打印指针,并且根本不尝试将结构传递给printf

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

10-09 02:50