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

我们接下来说一说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 769 最多能完成排序的块(单向遍历)

    769. 最多能完成排序的块 数组arr是[0, 1, -, arr.length - 1]的一种排列,我们将这个数组分割成几个"块",并将这些块分别进行排序.之后再连接起来,使得 ...

  2. Java实现 蓝桥杯VIP 基础练习 字符串对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  3. Java实现 洛谷 P1046 陶陶摘苹果

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = ...

  4. java实现第三届蓝桥杯古代赌局

    古代赌局 [编程题](满分23分) 俗话说:十赌九输.因为大多数赌局的背后都藏有阴谋.不过也不尽然,有些赌局背后藏有的是:"阳谋". 有一种赌局是这样的:桌子上放六个匣子,编号是1 ...

  5. java实现第六届蓝桥杯垒骰子

    垒骰子 题目描述 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰 ...

  6. java代码(14) --Java8函数式接口

    Java8函数式接口 之前有关JDK8的Lambda表达式 Java代码(1)--Java8 Lambda 函数式接口可以理解就是为Lambda服务的,它们组合在一起可以让你的代码看去更加简洁 一.概 ...

  7. Android官方新推的DI库 Hilt

    Android官方新推的DI库 Hilt Hilt是Google Android官方新推荐的依赖注入工具. 已加入到官方文档: Dependency injection with Hilt. 目前是a ...

  8. (六)POI-操作Excel的poi的字体设置

    原文链接:https://blog.csdn.net/class157/article/details/92817286 package com.java.poi; import org.apache ...

  9. 【JMeter_13】JMeter逻辑控制器__执行时间控制器<Runtime Controller>

    执行时间控制器<Runtime Controller> 业务逻辑: 根据输入的Runtime的值,对当前节点下的执行时长进行控制,当执行时长超过限定时长后,执行完当前正在执行的取样器后,跳 ...

  10. C语言宏技巧 X宏

    前言 本文介绍下X宏的使用 首先简单介绍下宏的几种用法 #define STRCAT(X,Y) X##Y #define _STR(X) #@X #define STR(X) #X #define L ...