C零基础视频-40-结构体指针


视频地址: https://www.bilibili.com/video/av74820522

结构体指针的定义

结构体指针的定义与基本数据结构的指针类似,使用"*"符号即可:

#include <stdio.h>

struct tagPetDog{
    char szName[20];
    char szColor[20];
    char nWeight;
};

int main(int argc, char* argv[])
{
    tagPetDog dog = { "旺财", "黄色", 5 };
    tagPetDog* pDog = &dog;
    return 0;
}

使用结构体指针引用结构体成员

结构体指针也支持取内容,加减常数等操作,同基本数据结构的指针类似,在此不再赘述。
结构体指针通过"->"运算符,可以引用结构体成员:

#include <stdio.h>

struct tagPetDog{
    char szName[20];
    char szColor[20];
    char nWeight;
};

int main(int argc, char* argv[])
{
    tagPetDog dog = { "旺财", "黄色", 5 };
    tagPetDog* pDog = &dog;
    printf("%s 颜色:%s, 体重:%d公斤\r\n", 
        pDog->szName, 
        pDog->szColor, 
        pDog->nWeight);
    return 0;
}

结构体指针作为函数参数传递

如果某个函数需要使用结构体,那么一般推荐使用结构体指针作为参数,它有两个好处:

  • 只传递一个指针地址,而不是复制整个结构体,节省传参时的栈空间
  • 函数内部对结构体的修改,可以作用到函数外部
#include <stdio.h>

struct tagPetDog{
    char szName[20];
    char szColor[20];
    char nWeight;
};

void FunAddWeight(tagPetDog* pDog, int nAddWeight)
{
    pDog->nWeight += nAddWeight;
}

int main(int argc, char* argv[])
{
    tagPetDog dog = { "旺财", "黄色", 5 };
    tagPetDog* pDog = &dog;
    printf("%s 颜色:%s, 体重:%d公斤\r\n", 
        pDog->szName, 
        pDog->szColor, 
        pDog->nWeight);
    FunAddWeight(pDog, 10);
    printf("%s 颜色:%s, 体重:%d公斤\r\n",
        pDog->szName,
        pDog->szColor,
        pDog->nWeight);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值