C语言 | 结构体指针

C语言指向结构体变量的指针

在C语言中,指向结构体对象的指针变量既可以指向结构体变量,也可指向结构体数组中的元素。

指针变量的基类型必须与结构体变量的类型相同。

C语言中允许
(*p).num用p->num来代替
->代表一个箭头
p->num表示p所指向的结构体变量中的num成员

C语言指向结构体数组的指针

(  p)->num

先使p自加1,然后得到p指向的元素中的num成员值。

(p  )->num

先求的p->num的值,然后再使p自加1。

C语言用结构体变量和结构体变量的指针作函数参数

用结构体变量的成员作参数,用法和用普通变量作实参是一样的,属于“值传递”方式。应当注意实参与形参的类型保持一致。

用结构体变量作实参。用结构体变量作实参时,采取的也是“值传递”的方式,将结构体变量所占的内存单元的内容全部按顺序传递给形参,形参也必须是同类型的结构体变量。

用指向结构体变量(或数组元素)的指针作实参,将结构体变量的地址传给形参。

C语言使用结构体指针输出生日

#include
#include
struct Age
{
    int year;
    int month;
    int day;
};
struct Student
{
    char name[20]; //姓名
    struct Age birthday;  //生日
};
int main(void)
{
    struct Student student1; //定义结构体变量student1
    struct Student *point  = NULL;  //定义一个指向Student结构体类型的指针变量point 
    point = &student1; //point指向结构体变量student1的首地址, 即第一个成员的地址
    strcpy((*point ).name, "张三"); //(*point).name等价于student1.name
    (*point ).birthday.year = 1989;
    (*point ).birthday.month = 4;
    (*point ).birthday.day = 29;
    printf("姓名:%s\n", (*point ).name); //(*point).name不能写成point
    printf("生日:%d-%d-%d\n", (*point).birthday.year, (*point).birthday.month, (*point).birthday.day);
    return 0;
}

编译运行结果:

姓名:张三
生日:1989-4-29

--------------------------------
Process exited after 0.04992 seconds with return value 0
请按任意键继续. . .

声明:

本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值