C语言基础入门48篇_40_结构体指针(结构体指针定义与基本数据结构指针类似,使用*、指针用->引用成员,变量用.引用成员、当使用结构体时建议用结构体指针作为参数)

1. 结构体指针的定义


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

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

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


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

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

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


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

  • 只传递一个指针地址,而不是复制整个结构体,节省传参时的栈空间
  • 函数内部对结构体的修改,可以作用到结构体变量中
#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;
}

运行结果:
在这里插入图片描述

4. 学习视频地址: 结构体指针

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值