一 结构体的定义和初识化

1.什么是结构体:结构体是由一批数据组合而成的一种新的数据类型。组成结构型数据的每个数据称为结构型数据的“成员”。

1.1结构体变量:关键字struct和结构体名组合成一种类型标识符,其地位如同通常的int、char等类型标识符,其用途就像 int 类型标识符标识整型变量一样可以用来定义结构体变量。定义变量以后,该变量就可以像定义的其他变量一样使用了;成员又称为成员变量,它是结构体所包含的若干个基本的结构类型,必须用“{}”括起来,并且要以分号结束,每个成员应表明具体的数据类型。成员类型可以是变量,数组,指针,以及其它结构体;

2,结构体的定义:

struct tag{      //struct 结构体定义关键字和int char定义变量一样member-list //member-list 结构体成员列表 必须列出其所有成员
}variable-list  //ariable-list结构体声明的变量
/*****************************************/
//定义一:
struct stu{int a,char b;
};
struct stu s1 ={ x,y };//给结构体赋值;
struct people
{char name[20];//姓名int age;//年龄char sex[5];//性别char phone[20];//电话
};
struct people s1 = { "小白",20,"男","17673849819" };
/*****************************************/
//定义二
typedef struct stu
{int a,char b;
}stu;
stu s1 ={ x,y };//给结构体赋值;
typedef struct people
{char name[20];//姓名int age;//年龄char sex[5];//性别char phone[20];//电话
}pl;
pl p1 ={ "小白",20,"男","17673849819" };
//结构体后面的分号不能丢!!!

二 结构体成员访问与传参

1.结构体成员的访问

1.结构体变量访问成员 结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数

#include<stdio.h>
struct student
{char name[20];//姓名int age;//年龄char sex[5];//性别char phone[20];//电话
}s1;
int main(void)
{struct student s1 = { "小白",20,"男","17673849819" };//给结构体赋值printf("name=%s\n", s1.name);//打印姓名printf("age=%d\n", s1.age);//打印年龄printf("sex=%s\n", s1.sex);//打印性别printf("title=%s\n", s1.phone);//打印电话return 0;
}

2.结构体指针访问指向变量的成员 有时候我们得到的不是一个结构体变量,而是指向一个结构体的
指针 ,可以通过->(指向结构体成员运算符)

#include<stdio.h>typedef struct stu
{char name[20];//姓名int age;//年龄char sex[5];//性别char phone[20];//电话
}stu;
void DisPlay(struct stu * s1)
{printf("name=%s\n", s1->name);//打印姓名printf("age=%d\n", s1->age);//打印年龄printf("sex=%s\n", s1->sex);//打印性别printf("title=%s\n", s1->phone);//打印电话
}
int main(void)
{struct stu S = { "小白",20,"男","17673849819" };//给结构体赋值DisPlay(&S);//把S的地址传递给DisPlay函数return 0;
}

3.结构体与结构的嵌套

struct stu
{char name[20];//姓名int age;//年龄char sex[5];//性别char phone[20];//电话
};typedef struct Class1
{struct stu s1;struct stu s2; struct stu s3;}C;void DisPlay(C * c1)
{printf("name: %s\n", c1->s1.name);//打印姓名printf("age: %d\n", c1->s1.age);//打印年龄printf("sex: %s\n", c1->s1.sex);//打印性别printf("title: %s\n", c1->s1.phone);//打印电话
//s1.name 是取struct stu 的值,然后在通过c1->来指向这个值printf("name: %s\n", c1->s2.name);//打印姓名printf("age: %d\n", c1->s2.age);//打印年龄printf("sex: %s\n", c1->s2.sex);//打印性别printf("title: %s\n", c1->s2.phone);//打印电话printf("name: %s\n", c1->s3.name);//打印姓名printf("age: %d\n", c1->s3.age);//打印年龄printf("sex: %s\n", c1->s3.sex);//打印性别printf("title: %s\n", c1->s3.phone);//打印电话
}
int main(void)
{C c1 = { {"dream",19,"女","1767384981x"}, { "hope",20,"女","176738498x9" }, {"insist",21,"女","17673849819"} };//给结构体赋值DisPlay(&c1);return 0;
}

先定义了一个stu结构体,把stu结构体变量,放到class结构体中作为class结构体的成员变量,在mian函数进行初识化赋值,把c1的地址传给Display函数

参考链接
https://baike.baidu.com/item/%E7%BB%93%E6%9E%84%E4%BD%93/3709485?fr=aladdin

学习结构体,以及使用方法相关推荐

  1. c语言 结构体ppt,C语言知识学习结构体.ppt

    C语言知识学习结构体.ppt Chap 9 结构,9.1 输出平均分最高的学生信息 9.2 学生成绩排序 9.3 修改学生成绩,本章要点,什么是结构结构与数组有什么差别 有几种结构的定义形式,它们之间 ...

  2. matlab结构体数组定义方法

    matlab学习-结构体数组定义 方法一:直接定义 方法二:使用struct命令 当需要定义的参数变量较多时,往往需要用到结构体,Matlab中结构体数组与python中字典概念差不多,使用方法也类似 ...

  3. WIN7 UAC/结构体的Equals方法/C# 开发wince程序,窗口上总留有一块空白区域/静态构造函数...

    1. vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常.相信是权限问题,请问应该如何解决?能不能设置dll默认以管理员身分运行? 备注:此DLL已注册成功! 回复引用 全部回 ...

  4. 查看一个结构体成员的方法

    find / *.h -name|xargs grep 结构体名 这个方法并不是很凑效... 万能的gdb 法: int main(void){type var;return 0;}gcc -g a. ...

  5. c/c++下取消结构体字节对齐方法

    c/c++下取消结构体字节对齐方法 在c/c++下编译器会默认地对结构体进行对齐,其对齐的方法跟平台具体的特性有关,本文主要介绍结构体不进行对齐的方法. 1.结构体字节不进行对齐的用途 (1).减小内 ...

  6. Keil中取消结构体对齐的方法

    Keil中取消结构体对齐的方法 我在写通讯协议的时候喜欢使用 Union 的形式将整个数据包按需处理,接收数据时使用数组形式来接收,解析数据则使用结构体形式来解析,伪代码如下. union {uint ...

  7. 5 精通matlab深入学习结构体看这篇文章就够了

    %% 学习目标:深入学习结构体变量 %% 创建结构体变量 clear all; s1=struct('fengge',{'big','little'},'yanse',{'blue'},'shuju' ...

  8. C语言定义一个结构体方法,C语言结构体定义的方法汇总

    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...

  9. C语言 · 运用结构体的排序方法

    AllSight C语言 · 运用结构体的排序方法 之前遇到排序只想着最原始的方法,诸如冒泡,选择,快速排序等等,刚刚跟大牛学会了结构体的方法来排序,这样的话以后再也不用怕成绩统计.名次排序之类的题目 ...

  10. c语言结构体定义坐标,C语言结构体定义的方法汇总

    什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...

最新文章

  1. 惠普z840工作站安装linux,HPZ440Z640和Z840工作站系列使用手册.PDF
  2. matlab遍历文件制作自己的数据集 .mat文件
  3. mysql 建数据库并设置为utf-8编码
  4. git 报错:was cached in the local repository, resolution will not be reattempted until the upda
  5. 《IT项目管理》读书笔记(5) —— 项目时间管理
  6. kodi pvr 不能安装_Kodi看电视直播教程 安装PVR IPTV Simple Client播放m3u8直播源
  7. 每日一练蓝桥杯C语言:2020年真题题集(B组)
  8. CTF训练(密码学)——位移密码
  9. Bzoj1001 [BeiJing2006]狼抓兔子
  10. 个人云盘:阿里云无影,百度网盘、腾讯微云争霸?
  11. mp3转wav方法,mp3转wav步骤
  12. zotero自动安装word插件失败
  13. 阿里巴巴国际站新店铺3个月的成果
  14. Android Manager之SensorManager---距离传感器
  15. 转如何用ps制作名片
  16. 中文文本分类——商品评论情感判别
  17. 终于拿到了阿里2023年度九大Java技术文档——面试题+文档+白皮书
  18. 智能指针以及rall
  19. Android 实现简单的悬浮窗按钮(一)
  20. sdnu1283.山师好男友(找规律)

热门文章

  1. 用java解决数字三角形问题(动态规划)
  2. msk 频偏_快速估算msk信号载波的方法
  3. html+css网页开发实战——1、头部背景和文字的制作
  4. 【译】10 款国外实用、有趣的 GitHub 简介 README
  5. 计算机考证 2021年下半年软考成绩查询时间终于公布了 速查
  6. 联通服务器信号怎么设置,联通4g网速太慢怎么办(怎么设置让联通4g网速变快)
  7. 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。
  8. discuz应用中心打不开,显示空白解决方法
  9. 【STM8S】STM8S之内外部16M晶振
  10. 2021年NOC复赛真题解析