抱歉,菜鸟问题
我有一个结构:
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
不是指针,因此无法取消引用。解引用运算符*
仅对指针有意义。
关于C数据结构、变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59668932/