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

我们接下来说一说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实现 LeetCode 781 森林中的兔子(分析题)

    781. 森林中的兔子 森林中,每个兔子都有颜色.其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色.我们将这些回答放在 answers 数组里. 返回森林中兔子的最少数量. 示例: ...

  2. Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)

    765. 情侣牵手 N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手. 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起. 一次交换可选择任意两人,让他们站起来交换座位. 人和座位用 0 ...

  3. Java实现 蓝桥杯 基础练习 特殊的数字

    基础练习 特殊的数字 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333.编程求所 ...

  4. Java实现 LeetCode 551 学生出勤记录 I(暴力大法好)

    551. 学生出勤记录 I 给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个 ...

  5. Java实现 POJ 2749 分解因数(计蒜客)

    POJ 2749 分解因数(计蒜客) Description 给出一个正整数a,要求分解成若干个正整数的乘积,即a = a1 * a2 * a3 * - * an,并且1 < a1 <= ...

  6. Java实现 蓝桥杯 算法提高 最长滑雪道

    试题 算法提高 最长滑雪道 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小袁非常喜欢滑雪, 因为滑雪很刺激.为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上 ...

  7. Java 虚拟机是如何判定两个 Java 类是相同的?

    Java 虚拟机是如何判定两个 Java 类是相同的? 答:Java 虚拟机不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样.只有两者都相同的情况,才认为两个类是相同的.即便是同样的字节代码 ...

  8. java实现第四届蓝桥杯有理数类

    有理数类 题目描述 有理数就是可以表示为两个整数的比值的数字.一般情况下,我们用近似的小数表示.但有些时候,不允许出现误差,必须用两个整数来表示一个有理数. 这时,我们可以建立一个"有理数类 ...

  9. 【Vue】axios封装,更好的管理api接口和使用

    在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...

  10. java调用linux下的so库

    1.编写java类 public class Abc { static { System.loadLibrary("abc"); } public native static St ...