对不起菜鸟问题
我有一个结构:
typedef struct s_test
{
int head;
char *end;
} t_test;
我的代码:
int main()
{
t_test a;
t_test *b;
}
a.head
和b->head
有什么区别?为什么不能输入a->head
或b.head
?我知道b
是一个指针,其中保存着一个变量类型t_test
的地址。
做b->head
只是做(*b).head
的方便语法糖。
您必须先取消引用结构的指针,然后才能在其上使用点符号,这就是为什么您无法执行b.head
。
无法执行a->head
的原因是a
不是指针,因此无法取消引用。解引用运算符*
仅对指针有意义。