一.结构体定义

C语言结构体由一系列相同或者不同类型的数据构成的集合,结构体类型就是以struct关键字定义的数据类型。

结构体的格式如下:

struct 结构名称 { 结构体所包含的数据成员,包括变量数组等
} 结构变量 ;//结构变量可以指定一个或多个

举例:

struct Student
{char name[10];char sex[2];int age;
}Stu

二.实例演示

先看下结构体变量如何初始化

#include <stdio.h>
#include <string.h>
struct Student
{char name[10];char sex[5];int age;
}Stu = {"Mike","man",22};int main(int argc, char *argv[])
{printf("name:%s\nsex:%s\nage:%d\n",Stu.name,Stu.sex,Stu.age);
}

初始化结构体变量很简单,直接在结构体变量后面赋值。
结果:

结构体作为函数参数

#include <stdio.h>
#include <string.h>
//定义Student结构体
struct Student
{char name[10];char sex[5];int age;
}Stu;void print(struct Student stu)
{printf("Student name:%s\n",stu.name);printf("Student sex:%s\n",stu.sex);printf("Student age:%d\n",stu.age);
}int main(int argc, char *argv[])
{struct Student stu1;strcpy(stu1.name,"will");strcpy(stu1.sex,"man");stu1.age = 20;print(stu1);//StuStu.age=11;print(Stu);
}


从这个示例可以看出:将结构体作为参数传入函数,定义结构体时,我们可以在;前面定义结构体变量, 这样就不需要再定义结构变量,如:struct Student stu1;假设stu1在定义结构体时就定义变量,那么就可以直接赋值。

结果:

可以看出第二个学生打印,因为在定义结构体时就已经定义结构变量,所以可以直接赋值。

结构体指针

实例演示,传入结构体指针

#include <stdio.h>
#include <string.h>
struct Student
{char name[10];char sex[5];int age;
}Stu;void print(struct Student *stu)
{printf("Student name:%s\n",stu->name);printf("Student sex:%s\n",stu->sex);printf("Student age:%d\n",stu->age);
}int main(int argc, char *argv[])
{struct Student stu1;strcpy(stu1.name,"will");strcpy(stu1.sex,"man");stu1.age = 20;print(&stu1);Stu.age=11;print(&Stu);
}

这里的实例和上面例子的区别主要是:
1.将定义的变量改为指针struct Student *stu。
2.指针赋值时使用->。
3.使用打印函数时,改为取地址。

结果一致

三.typedef struct 和 struct的区别

1、声明不同

1)、struct:struct可以直接使用结构体名字声明结构体。
2)、typedef struct:typedef struct为修饰结构体,结构体有了别名,通过结构体别名声明结构体。

2、访问成员变量不同

1)、struct:struct定义的结构体变量,可直接访问结构体成员

2)、typedef struct:typedef struct定义的结构体变量,不可直接访问结构体成员,必须显式的通过结构体变量来访问成员。

3、重新定义不同

1)、struct:想重新定义struct结构体的话,必须重写整个结构体。

2)、typedef struct:想重新定义typedef struct结构体的话,可以通过别名来继承结构体进行重新定义。
举例:

可以看到:
使用typedef struct定义的结构体,我们通常是使用别名进行操作,而且在使用时也简化了使用方法,例如:Stu s1,相当于声明对象一样,如果使用struct,那么就要写成struct Student stu1;。

如果直接使用结构体名称那么会报错:

错误示例:

报错结果:

改回别名操作,结果:

C语言结构体实例演示相关推荐

  1. c语言-结构体实例笔记

    结构体实例 实例一览: 使用结构体存储学生的信息 Store information of a student using structure 计算二者距离(以英寸英尺为单位) Add two dis ...

  2. C语言结构体实例-创建兔子

    参考裸编程思想. #include <stdio.h> //#include "ycjobject.h"// 颜色定义 #define CL_BLACK 0 #defi ...

  3. C语言结构体及函数传递数组參数演示样例

    C语言结构体及函数传递数组參数演示样例 注:makeSphere()函数返回Sphere结构体,main函数中.调用makeSphere()函数,传递的第一个參数为数组,传递的数组作为指针. post ...

  4. C语言结构体运用实例

    C语言结构体运用实例 问题描述:编写程序,定义一个结构体(如下图)数组存放5个同学的学号,姓名和成绩,程序可按照用户输入的学号在该数组中进行查找,如找到则输出该同学的学号.姓名和成绩信息,如找不到则输 ...

  5. C语言结构体struct详解与实例

    目录 1.定义 2.应用 2.1初始化 2.2使用 3.结构体对齐规则与存储 1.定义 C语言中结构体(struct关键字定义)是一种自定义数据类型.通过结构体的定义可以将多种不同类型数据形成一个组合 ...

  6. C语言结构体和结构体数组示例 - Win32窗口程序演示

    C语言结构体和结构体数组的使用: /* C结构体和结构体数组示例,by bobo */#include <windows.h>LRESULT CALLBACK WndProc (HWND, ...

  7. C语言结构体的作用、定义、使用方法以及实例

    目前已学的数据类型:数组(1.所有数据的类型必须一致   2.访问数组的成员必须通过下标) 学籍管理系统:学生(姓名.学号.性别.年龄.成绩...) 飞机票订票系统:机票(订票时间.班号.起点.终点. ...

  8. C语言结构体的定义与使用、结构体数组、指向结构体的指针(有代码详解)

    1.结构体的定义与使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体的定义形式: struct 结构体名{结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数 ...

  9. golang常用库之mapstructure包 | 多json格式情况解析、GO json 如何转化为 map 和 struct、Go语言结构体标签(Struct Tag)

    文章目录 golang常用库之mitchellh/mapstructure包 | go将map转换为struct 一.msgpack 二.背景 三.多json格式情况解析使用思路 四.mapstruc ...

  10. C语言连接结构体,C语言结构体嵌套

    本篇文章帮大家学习c语言结构体嵌套,包含了C语言结构体嵌套使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. C语言中的嵌套结构体表示在一个结构体中可以使用另一个结构作为成员 ...

最新文章

  1. B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)
  2. 使用Oracle 的 imp ,exp 命令实现数据的导入导出
  3. Free 4 months Serial License Key Of Outpost Security Suite Pro 8.1
  4. 静态时序分析的约束命令
  5. 【智力问题】25匹马赛跑,每次只能跑5匹马,最快能赛几次找出跑得最快的3匹马?赛跑不能计时,并假设每匹马的速度是恒定不变的。...
  6. SVN服务器搭建和使用(一)
  7. C++ 文件读写操作01
  8. mysql error 1201_ERROR 1201 (HY000): Could not initialize master info structure; .....
  9. 《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项...
  10. dos进入mysql不记得密码_windos mysql 忘记密码,无密码登录,重新登录
  11. jq处理返回来json_JQuery ajax返回JSON时的处理方式 (三种方式)
  12. ERROR: libopenjp2 = 2.1.0 not found using pkg-config
  13. 对《Java编程思想》读者的一点建议
  14. 9. 面向对象基础(下)
  15. C语言将raw转为bmp,Raw格式转换为Bmp格式
  16. 如何在Windows上启用JavaScript
  17. halcon中的分水岭算法讲解以及作用和实例
  18. 软件安装教程-Vivado2018.3/ISE14.7/Modelsim10.5/Keil5/AD18/Cadence17.2/CAD2016
  19. [QDialog]qt虚拟键盘的实现以及qdateedit实现打开虚拟键盘
  20. 魅族手机安装Google Play

热门文章

  1. 读《华为研发》第2版
  2. 01、(一)关于app开发的准备工作和环境的搭建
  3. Win装linux双系统教程
  4. 手把手入门三菱PLC FX2N系列(一)安装GX works2 、 连接PLC、基本操作
  5. 三菱PLC(FX5U)与C#通信说明
  6. 计算机电子设计论文,计算机毕业设计电子信息毕业设计电子信息毕业论文
  7. java实现扫雷小游戏【完整版】
  8. AutoCAD2012从入门到精通中文视频教程 第一课 简介及界面组成 (个人收藏)
  9. AutoCAD 二次开发之 ObjectARX 环境搭建
  10. 四、ASP文件的基本格式及新建方法