基本结构问题C
例如:基本结构问题C,c,struct,C,Struct,例如: typedef struct { int num; int den; } rational_number; 有理数a 使用 a、 num或a.den 和 a->num或a->den Thx PREVICE.->用于访问指向结构的指针的成员,而。用于访问结构本身的成员。a->num实际上只是*a.num的简写。例如: typedef struct { int num; int den; } rational_number; ra
typedef struct {
int num;
int den;
} rational_number;
有理数a
使用
a、 num或a.den
和
a->num或a->den
Thx PREVICE.->用于访问指向结构的指针的成员,而。用于访问结构本身的成员。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 */
当它是普通变量时使用.num,当它是指针时使用->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;
如果将声明为指向结构的指针,则->num将返回num的值
rational_number *a;
a->num = 5;
int new_a;
new_a = a->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;
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;
你两个都试过了吗?发生了什么?另请参见: