结构体中 “->” 与 “.” 的区别以及使用
两者在同一个代码块内使用的时候其实没有什么太大不同,无非就是声明结构体的时候一个是声明指针,一个是声明结构体。声明结构体的时候分配了内存空间,所以可以用".“直接访问,而声明指针之后并没有分配内存空间,所以用”->“来指向开辟的空间。也可以用”(*buffer).foo" ,等价于"buffer->foo"。
-
"->"是在声明结构体指针时,访问结构体成员变量时使用。
-
"."是声明结构体时,访问结构体成员变量时使用。
typedef struct Buffer
{
int flag;
int foo;
int (*sum) (int, int); //函数指针
}Buffer;
int main ()
{
Buffer *buffer;
Buffer buffer2;
buffer->foo = 1;
buffer2.foo = 5;
printf("buffer foo : %d\r\n", buffer->foo);
printf("*buffer foo : %d\r\n", (*buffer).foo);
printf("buffer2 foo : %d\r\n", buffer2.foo);
}
而当结构体作为函数变量传入的时候,就是以指针的方式传入,此时在传入函数中就是使用"->"
void bufferControl(Buffer *controlBuf)
{
if(controlBuf->flag)
{
controlBuf->flag = 0;
}
else
controlBuf->flag = 1;
}
整体测试用例
<

最低0.47元/天 解锁文章
1888





