我写完上一个文章,发现我写的还是不够全面,所以,这篇文章将会延续上一个文章的内容,并且再次补充新的东西,如果还有什么地方需要补充,还请各位一一指出,如果你已经学过这些东西,大可以直接跳过,假如说之后有地方忘了,也可以返回来继续学习

我们接下来说一说C语言的构造类型,C语言中的构造类型有[数组],[结构体],[共用体],[枚举类型],让我们来一一进行说明

  • 数组:数组应该是大家了解的最早的构造类型了,为什么说数组是构造类型呢,我不知道大家当时是怎么学习的,我现在要给大家说的是,其实所有的数组都是一维数组,那我们的多维数组是怎么来的呢,是因为我们数组的元素仍然可以是数组,所以用这样的关系,我们可以创造出多维数组,接下来简单的说一说数组:
      1 #include<stdio.h>
    2
    3 int main(void)
    4 {
    5 int a[2][2]={1,2,3,4};//整形数组的定义及一些初始化的方法
    6 char b[2][2]={{'a','b'},{'c','d'}};//字符型数组的定义及一些初始化的方法
    7 a[0][1]=a[1][0]+a[1][1];//数组元素和同类型的变量是一样的,变量怎么使用,数组元素就可以怎样使用
    8 }

除此之外,还有数组名和指针的关系,你可能还去了解了语法糖等东西,但是那些对于我们入门51单片机不是必须学会的,但并不是说就可以不学了,只是当前我们入门51单片机可以暂时不用那方面的知识

  • 结构体:结构体也是C语言一个重要的知识点,就以我自己来说,我的C语言课程都没有学到这里,我不知道大家是怎么样的,但是会有一些人没有学到这里,所以我需要说一下结构体,如果说之前的数组并不是很能体现构造类型的特点,那么我们的结构体一定能体现出来

结构体是由若干"成员"组成的,其中的每一个成员可以是一个基本数据类型,也可以又一个构造类型,那么我们现在可以知道,结构体是一种新的类型,所以我们应该先对其进行构造(我们称为声明一个结构体)

  1 struct 结构体名
2 {
3 成员列表
4 };

关键字struct表明我是要声明一个结构体了,后面的结构体名是结构体的类型名(这个是要强调的,这个不是变量名,是类型名,和int一样是类型名)

  1 struct Grade
2 {
3 int Chinese;//结构体中可以有基本数据类型
4 int Math;
5 int English;
6 };
7
8 struct Student
9 {
10 int age;
11 char name[10];//可以有构造类型
12 int number;
13 char sex[10];//可以有多种不同数据类型
14 struct Grade data;//成员也可以又是一个结构体,这里有关于结构体定义的东西,我们马上会说到
15 };

就像这样的一个例子,我们就可以知道一个结构体类型(注意是类型,不是变量)是如何定义的了,成员只要合法,剩下的都随你

接下来说结构体变量的定义,和普通的变量一样,类型名加变量名,主要的有以下三种定义的方式

  1 struct student
2 {
3 char name[10];
4 int number;
5 }Stu;
6 //这个是定义结构体的同时定义变量,结构体变量为Stu
7
8 struct student
9 {
10 char name[10];
11 int number;
12 };
13 struct student Stu;
14 //这个是在定义了结构体类型之后,再定义结构体变量,同样的变量还是Stu
15
16 struct
17 {
18 char name[10];
19 int number;
20 }Stu;
21 //这个是没有结构体类型名的定义,这种类型定义变量只能是定义结构体的同时定义变量,不能在别处定义

紧接着我们就说一说结构体变量的使用,我们在访问结构体变量的时候会用到成员操作符:"."和"->",其中"."用于结构体变量,比如Stu.name就是访问Stu的name成员,而我们如果是指针类型则需要"->",比如说&Stu->name,因为我们的&Stu是Stu的指针,也就是结构体指针,所以我们想要访问结构体成员就需要使用"->"而不是".",结构体的成员和普通的变量使用起来是一样的,在这里大家可以去查阅一些资料查看具体的知识点

共用体和结构体的定义是类似的,你只需要把struct改成union,就是共用了啦,共用体和结构体用法是一样的,只是结构体的成员是同时存在的,而共用体的成员同一时间只能存在一个,在给一个成员赋值的时候,别的成员都是失效的,这就是共用体和结构体的区别

剩下的是枚举类型,这个在单片机中虽然会用到,但是你是可以不必了解的,如果你想了解,可以上网查阅资料,我之后也可能会写C语言入门的博客,到时候再看也是可以的

关于构造类型就说到这里了,想要熟练的掌握使用它,就要自己用工了

51单片机入门(补充)1--与C语言的交接的更多相关文章

  1. 51单片机入门1--与C语言的交接

    我们即将进入51单片机的编程学习,咱们今天就来讲解一下单片机中的C语言(你可以称作C51) 在说编程之前,要先说一些别的东西: 二进制,八进制,十六进制 二进制中只有数字0和1,在二进制中1+1为10 ...

  2. 基于51单片机的CAN通讯协议C语言程序

      //-----------------------函数声明,变量定义-------------------------------------------------------- #includ ...

  3. 51单片机模拟I2C总线的C语言实现

    电路原理图   EEPROM为ATMEL公司的AT24C01A.单片机为ATMEL公司的AT89C51. 软件说明 C语言为Franklin C V3.2.将源程序另存为testi2c.c,用命令 C ...

  4. 【零基础】入门51单片机图文教程(Proteus+Keil)

    参考资料: https://www.jianshu.com/p/88dfc09e7403 https://blog.csdn.net/feit2417/article/details/80890218 ...

  5. [学习笔记]15个QA让你快速入门51单片机开发

    一.C语言相关 Q1:sbit与sfr代表是什么?有什么作用? Q2:#define OSC_FREQ  22118400L这句宏命令里的“L”是什么意思? Q3:我粘贴了别人的代码,怎么发现没有un ...

  6. [新概念51单片机C语言教程·郭天祥] 1、 基础知识必备

    目录: 单片机的大致介绍         1-1.通俗定义         1-2.51系列产品         1-3.标号意思         1-4.引脚介绍         1-5.用C语言开 ...

  7. 51单片机C语言学习笔记3: 存储器结构

    MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器2.片外程序存储器3.片内数据存储器4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外统一编 ...

  8. 51单片机C语言学习笔记6:51单片机C语言头文件及其使用

    很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这个是在头文件中用sfr定义的,现在定义好了的是这样的 sfr P1 ...

  9. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序:#include<reg52.h>  void main(void)  {   EA=1;      //开放总中断   E ...

随机推荐

  1. Java实现 蓝桥杯VIP 算法训练 调和数列

    问题描述 输入一个实数x,求最小的n使得,1/2+1/3+1/4+-+1/(n+1)>=x. 输入的实数x保证大于等于0.01,小于等于5.20,并且恰好有两位小数.你的程序要能够处理多组数据, ...

  2. Java实现 LeetCode 230 二叉搜索树中第K小的元素

    230. 二叉搜索树中第K小的元素 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. ...

  3. java实现第五届蓝桥杯出栈次序

    出栈次序 X星球特别讲究秩序,所有道路都是单行线.一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行. 路边有个死胡同,只能容一辆车通过,是临时的检查站,如图[p1.png]所示. ...

  4. Linux 源码包安装过程

    安装准备 安装gcc编译器 下载源码包 源代码保存位置:/usr/local/src/ 软件安装位置:/usr/local/ 解压缩下载的源码包 进入解压缩目录 软件配置与检查:./configure ...

  5. 官宣!ASF官方正式宣布Apache Hudi成为顶级项目

    马萨诸塞州韦克菲尔德(Wakefield,MA)- 2020年6月 - Apache软件基金会(ASF).350多个开源项目和全职开发人员.管理人员和孵化器宣布:Apache Hudi正式成为Apac ...

  6. Fiddler工具学习使用总结

    1.初识fiddler: 作用:截获http/HTTPS请求,查看截获的请求内容,伪造客户端请求和服务器响应,测试网站性能,解密https的web会话,提供插件. 工作环境:支持素有操作系统和所有浏览 ...

  7. 恕我直言,我怀疑你并不会用 Java 枚举

    开门见山地说吧,enum(枚举)是 Java 1.5 时引入的关键字,它表示一种特殊类型的类,默认继承自 java.lang.Enum. 为了证明这一点,我们来新建一个枚举 PlayerType: p ...

  8. [转] strtol()详解

    点击此处阅读原文 今天,在review 一些代码的时候,看到了strtol()这个函数,由于以前使用它的时候,还没有深刻的了解,这次,我决定探个究竟. 网上关于这个函数的资料大都来源于同份资料,lin ...

  9. @loj - 2987@ 「CTSC2016」时空旅行

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 2045 年,人类的技术突飞猛进,已经找到了进行时空旅行的方法. ...

  10. Shell编译安装nginx

    环境及规划 [root@nginx-node01 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ID 主机名 ip ...