我虽然终于理解了指针,但后来遇到了这个问题:
typedef struct {
unsigned int a;
unsigned int b;
} Bar;
Bar *foo;
foo->a = 3;
这最后一条指令不起作用(如果我尝试访问foo->代码中的其他地方,我得到0或rubish)...我错过了什么?
答案 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.