例如:基本結構問題Ç
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