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; //定义结构体变量student1struct 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不能写成pointprintf("生日:%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
请按任意键继续. . .

声明:

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

C语言 | 结构体指针相关推荐

  1. C语言结构体指针的使用方法

    1.首先定义一个结构体,给它取别名: typedef struct node{ struct node * next://指向下一节点 int data://数据域 }pnode,*linklist; ...

  2. python 结构体指针_C语言结构体指针(指向结构体的指针)详解

    当一个指针变量指向结构体时,我们就称它为C语言结构体指针的定义形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: //结构体 struct stu{ char *nam ...

  3. C语言结构体指针(指向结构体的指针)详解

    当一个指针变量指向结构体时,我们就称它为结构体指针.C语言结构体指针的定义形式一般为: struct 结构体名 *变量名; 下面是一个定义结构体指针的实例: //结构体 struct stu{ cha ...

  4. c语言+结构体指针初始化,c语言结构体指针初始化===

    c语言结构体指针初始化 今天来讨论一下C中的内存管理. 记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以 ...

  5. C语言结构体指针强转

    文章目录 1.结构体指针强转 2.结构体指针强转在链表中的使用 3.结构体指针强转在链表中使用出现的问题 1.结构体指针强转 C语言中结构体无法进行强转,但是结构体指针是可以进行间接强转的 eg: 先 ...

  6. c语言结构体指针使用方法,C语言结构体指针的使用方法

    1.首先定义一个结构体,给它取别名: typedef struct node{ struct node * next://指向下一节点 int data://数据域 }pnode,*linklist; ...

  7. c语言结构体指针初始化

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  8. 结构体自定义指针函数c语言,C语言结构体指针在函数调用中的使用

    接触嵌入式编程已经有一段时间了,平时的编程中会经常遇到结构体,但是就直接拿来用了,没有注意过细节,结果遇到问题就纠结了.趁这个机会,研究了一下C语言的结构体和结构体指针,顺便总结一下! 注:关于结构体 ...

  9. c语言指针结构体心得,C语言结构体指针陷阱

    一."."和"->"区别: 当声明一个结构体时,因为自动分配了结构体的内存空间,所以可以直接用"."访问相应结构体内的存储单元,比如: ...

最新文章

  1. Java正则表达式细节1
  2. 拒绝“魏则西悲剧”, 产品经理支招,根解百度医疗“莆田系”漏洞
  3. JDK14中的java tools简介
  4. mysql换成oracle_从mysql转换到oracle数据库
  5. git找回当前目录下误删的所有文件
  6. 微计算机最常用的输入法,输入无极限 最常用五款拼音输入法横评
  7. linux怎么查看设备序列号,linux 使用dmidecode查看设备序列号
  8. IT笔试题收集,免费下载
  9. NameSilo域名解析管理工具
  10. Quorum快速部署
  11. Vue-高德地图-立体多边形绘制
  12. 数据库构造器之查询构造器构建
  13. 算法打卡Day16_leetcode _94. 二叉树的中序遍历
  14. 植物大战僵尸2激怒中国消费者
  15. 计算机组成原理——计算机的发展历史
  16. C语言实现模拟ATM机管理系统
  17. root认证失败 tera term_解决Ubuntu 18.04使用root账户登录显示“认证失败”
  18. bfv同态加密_同态加密入门教程
  19. Python学习——乘方运算符(**)的结合性
  20. 408王道计算机组成原理强化——数据的运算及大题

热门文章

  1. jcmd,大约JDK 11
  2. JasperReports:棘手的部分
  3. java heroku_Heroku和Java –从新手到初学者,第2部分
  4. adf开发_了解ADF Faces clientComponent属性
  5. 使用Payara Micro的Easy Java EE Microservices
  6. GC解释:收集器概述
  7. 使用Oracle Data Integrator(和Kafka / MapR流)完善Lambda体系结构
  8. 尺度不变性是指什么不变_不变性的来龙去脉
  9. jHipster入门,第1部分
  10. NetBeans Java EE技巧8:持久性单元