结构体是C语言中很重要的知识点,结构体使得C语言有能力去描述复杂类型。
        我们知道C语言中有许多类型,如:int、char、double······,但是现实世界中存在很多复杂的对象,不能简单用C语言中存在的类型去定义,比如确定“人”我们就需要他的名字、性别、身高、年龄等相关信息,而结构体就可以解决这个问题
        举个例子:

#include<stdio.h>
struct Book//结构体的应用
{char name[20];short prince;
};
int main()
{//利用结构体类型创建一个该类型的结构体变量struct Book b1={"C程序设计",34};printf("书名是%s\n",b1.name);//'.'为结构成员访问操作符printf("价格是%d\n",b1.prince);return 0;
}

这里我定义了一个书的结构体,里面有两个结构成员:书名、价格,这里需要注意,结构体的定义后面的{}在定义完之后要加上分号(“;”)
        在main函数里面,先是用结构体类型创建了一个结构体变量b1,再用大括号给其赋值,这里说明一下,因为name是一个数组(存字符串)所以需要用双引号定义,而prince是一个变量则不需要,当我们需要输出时可以用结构成员访问操作符进行输出。除了用{}定义还可以直接用结构成员访问操作符定义,比如:

#include<stdio.h>
#include<string.h>
struct Book//结构体的应用
{char name[20];short prince;
};
int main()
{//利用结构体类型创建一个该类型的结构体变量struct Book b1;strcpy(b1.name,"c程序设计");b1.prince=34;//直接利用结构成员访问操作符进行赋值printf("书名是%s\n",b1.name);//'.'为结构成员访问操作符printf("价格是%d\n",b1.prince);return 0;
}

这样输出的结果依然是:

这里需要注意,当我们定义b1.name时,我们不可以写:b1.name="c程序设计";这样会报错,在这里我们需要用到一个库函数——strcpy(string copy,字符串拷贝),要用这个就需要加上头文件string.h。

我们再试试用指针看能不能处理结构体:

#include<stdio.h>
#include<string.h>
struct Book//结构体的应用
{char name[20];short prince;
};
int main()
{//利用结构体类型创建一个该类型的结构体变量struct Book b1;strcpy(b1.name,"c程序设计");b1.prince=34;//直接利用结构成员访问操作符进行赋值struct Book* pb=&b1;//运用指针处理结构体printf("书名是%s\n",(*pb).name);printf("价格是%hd\n",(*pb).prince);return 0;
}

我们发现依然是能够正确输出,所以结构体也是可以用指针处理,提到指针那么就还有另外一种输出格式:

#include<string.h>
struct Book//结构体的应用
{char name[20];short prince;
};
int main()
{//利用结构体类型创建一个该类型的结构体变量struct Book b1;strcpy(b1.name,"c程序设计");b1.prince=34;//直接利用结构成员访问操作符进行赋值struct Book* pb=&b1;//运用指针处理结构体pb->prince=87;printf("书名是%s\n",pb->name);printf("价格是%hd\n",pb->prince);return 0;
}

输出结果也是正确的

总结:
1.结构体需要用struct去定义,定义完之后需要加上分号
2.应用结构体时需要用结构体类型先创建一个结构体变量
3.给结构体变量里成员定义有三种方法:
                (1)在创建一个结构体变量时用“{}”直接定义
                (2) 利用结构成员访问操作符——‘.’ 进行赋值
                (3)利用结构体指针——‘—>’ 进行赋值
4.打印结构体变量里面的各成员
                (1)利用结构成员访问操作符——‘.’ 打印
                (2)利用结构体指针——‘—>’ 打印

C语言中的结构体——struct相关推荐

  1. Go语言中的结构体 (struct)

    Golang官方称Go语言的语法相对Java语言而言要简洁很多,但是简洁背后也灵活了很多,所以很多看似很简单的代码上的细节稍不注意就会产生坑.本文主要对struct结构体的相关的语法进行总结和说明. ...

  2. 关于C语言中的结构体所占的字节数 sizeof(struct)

    C语言中的结构体所占的字节数 ,用sizeof求一个结构体的大小 C语言中用sizeof求结构体所占字节数的详细方法. 一.非嵌套结构体 struct one{char a; // 1(char所占字 ...

  3. C语言中的结构体,结构体中数组初始化与赋值

    最近写c语言中的结构体遇到了些问题,从网上找了些资料如下: 结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里 暂不讨论: 1.结构体的 ...

  4. Linux结构体变量报错,C语言中的结构体

    用户自己建立自己的结构体类型 1.  定义和使用结构体变量 (1).结构体的定义 C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体. (2).声明一个结构体类型的一般形式为: ...

  5. c语言中定义结构体指针的作用,C语言结构体定义,使用及指针(1)

    前言 C语言中的结构体作为一大难点,并且对于需要学习数据结构的同学来说,这个结构是每次上课都会遇到的,所以,我们只有更深层次的理解结构体的知识,才能更好的掌握数据结构 结构体用处 结构体到底有什么用? ...

  6. C语言中对结构体排序

    在C语言中对结构体排序 用qsort()函数进行排序, qsort()里面要传入4个参数–qsort(数组名,数组长度,sizeof(),排序方法) 实验9-5 查找书籍 (20分) 给定n本书的名称 ...

  7. C语言中的结构体定义和使用例子

    C语言中的结构体定义和使用例子 一.结构体定义的三种方式 结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对 问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共 ...

  8. X86汇编中的结构体STRUCT和UNION

    X86汇编中的结构体STRUCT和UNION 结构的定义 ; 定义名为Person的结构体 Person STRUCTidNum byte "000000"lastName byt ...

  9. 成员变量隐藏c语言,C语言中隐藏结构体的细节

    我们都知道,在C语言中,结构体中的字段都是可以访问的.或者说,在C++ 中,类和结构体的主要区别就是类中成员变量默认为private,而结构体中默认为public.结构体的这一个特性,导致结构体中封装 ...

最新文章

  1. 企业网络推广专员浅析如何完善网站维护企业网络推广吸引用户浏览
  2. AE 各分析适用数据
  3. Citrix Profile Management 和 VDI系列讲座之二:Profile漫游需要怎么配置存储和网络
  4. Linux date命令的用法
  5. JLabel跟label
  6. 微信小程序之通过Canvas生成图片保存到手机相册
  7. Analytics API and Customer Data Platform | Segment
  8. python xposed_GitHub - twqdev/CPWechatXposed: 使用Xposed Hook微信等APP
  9. 第11章 享元模式(Flyweight Pattern)
  10. JS、CSS合并带来的效率提升
  11. Java FileInputStream
  12. 搞定 Linux Shell 文本处理工具,看完这篇集锦就够了
  13. Sudoku Solver
  14. ajax请求几个状态,ajax的请求步骤!每个状态值表示什么?
  15. 计算机一级考试试题难不难,计算机一级考试通过率是多少 考试难吗
  16. 【实战毕业论文排版】图片添加题注实现自动编号
  17. GIS招聘 | 云南省自然资源厅所属事业单位
  18. matlab 画温度分布,matlab画温度分布图
  19. cgroup v2介绍及测试
  20. python+opencv代码给证件照换底色(别再用PS啦)(转载)

热门文章

  1. 用Al做icon熊猫表情包
  2. 深度优先搜索之数独游戏
  3. SVInout与Ref部分
  4. 摩托罗拉g7 plus,手机浮躁时代的匠心臻品
  5. Adams2020软件安装教程
  6. Centos 7mini版本网络配置
  7. 损失函数整理(分类和回归)
  8. yolo v5 损失函数分析
  9. 解决部分安卓touchend不触发问题
  10. docker onlyoffice使用教程