结构体中 “->“ 与 “.“ 的区别以及使用

结构体中 “->” 与 “.” 的区别以及使用

两者在同一个代码块内使用的时候其实没有什么太大不同,无非就是声明结构体的时候一个是声明指针,一个是声明结构体。声明结构体的时候分配了内存空间,所以可以用".“直接访问,而声明指针之后并没有分配内存空间,所以用”->“来指向开辟的空间。也可以用”(*buffer).foo" ,等价于"buffer->foo"。

  1. "->"是在声明结构体指针时,访问结构体成员变量时使用。

  2. "."是声明结构体时,访问结构体成员变量时使用。

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;
}

整体测试用例

<
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值