例如:基本结构问题Ç
typedef struct {
int num;
int den;
} rational_number;
rational_number a
;
是什么事先使用 a.num
或a.den
和
a->num
或a->den
THX之间的差异。
例如:基本结构问题Ç
typedef struct {
int num;
int den;
} rational_number;
rational_number a
;
是什么事先使用 a.num
或a.den
和
a->num
或a->den
THX之间的差异。
->
用于访问指向结构的指针的成员,而.
用于访问结构本身的成员。 a->num
实际上只是(*a).num
的简写。例如:当它是指针
对于离
typedef struct {
int num;
int den;
} rational_number;
rational_number a;
r.num = 1;
rational_number *a_ptr = &a;
a_ptr->num = 2; /* a.num is now 2 */
使用a.num,当它是正常可变的,并且A-> NUM。
rational_number a;
a.num; // is correct
a->num; // is wrong
rational_number *b;
b.num;// wrong
b->num; //is correct
不同的是,在第一种情况下你通过堆栈变量访问结构:经由堆指针
rational_number a;
a.num = 1;
a.den = 1;
在第二种情况下:
rational_number* a = new rational_number();
a->num = 1;
a->den = 1;
如果被声明为指向结构的指针,a-> num将返回num的值。
rational_number *a;
a->num = 5;
int new_a;
new_a = a->num;
你有一个被声明为结构,所以你应该使用a.num来返回num的值。
rational_number a;
a.num = 5;
int new_a;
new_a = a.num;
两个new_a的值设置为5
此外,您还可以得到一个地址,如果它是一个结构,并使用它像一个指针。
rational_number a;
(&a)->num = 5;
int new_a;
new_a = a.num;
您是否尝试过?怎么了? – dlev 2011-05-18 05:35:06
另请参阅:http://stackoverflow.com/questions/5998599/difference-between-and-in-a-struct – Bart 2011-05-18 05:36:25