例如:
typedef struct {
int num;
int den;
} rational_number;
rational_number a
;
使用之间有什么区别
a.num
或a.den
和
a->num
或a->den
答案 0 :(得分:5)
->
用于访问指向结构的指针的成员,而.
用于访问结构本身的成员。 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 */
答案 1 :(得分:0)
当它是普通变量时你使用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
答案 2 :(得分:0)
不同之处在于,在第一种情况下,您通过堆栈变量访问结构:
rational_number a;
a.num = 1;
a.den = 1;
在第二种情况下通过堆指针:
rational_number* a = new rational_number();
a->num = 1;
a->den = 1;
答案 3 :(得分:0)
如果a被声明为指向结构的指针,则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;