这个指针有什么问题?

时间:2014-07-03 08:20:03

标签: c pointers

我虽然终于理解了指针,但后来遇到了这个问题:

typedef struct {
    unsigned int a;
    unsigned int b;
} Bar;

Bar *foo;

foo->a = 3;

这最后一条指令不起作用(如果我尝试访问foo->代码中的其他地方,我得到0或rubish)...我错过了什么?

1 个答案:

答案 0 :(得分:4)

您需要实际创建Bar类型的对象,并使指针foo指向它。

Bar *foo = malloc(sizeof *foo); // Create a new Bar on the heap
foo->a = 3;                     // Now it works

或者,将指针设置为另一个对象的地址:

Bar actualObject;               // Create a new Bar on the stack
Bar *foo = &actualObject;       // Set the pointer to the address of the actual object using '&'
foo->a = 3;                     // Now it works

//NOTE: actualObject.a will also be 3 because it is the same object internally.