同学们好啊,我是401郭明,这篇博文我将带大家好好分析C语言结构体,帮大家在C语言方面快速打好基础,本篇博文主要针对没有C语言基础或者C语言基础不好的同学。

为了方便大家理解,我这篇文章将会讲的十分之详细,基本上我把我对于C语言的理解全部倾述于这篇博文之上,大家都知道我郭某人的梦想是当老师,所以这篇文章我会写的非常方便大家理解。并且尽可能让大家没有阅读障碍!

首先第一步嘛,我们想写一个C语言代码,我们肯定要创建一个C语言的源文件:

上面这张图片展示了我们在DEV C++中创建一个C语言源文件。

然后我们在创建了源文件之后就是代码编写了,比如接下来我们来写个脚本,这个脚本的目的呢是在windows的shell窗口中打印hello,world这行字。

#include<stdio.h>
int main(){printf("你好世界");return 0;
}

上面这行代码我们来一一分析:

#include<stdio.h>

上面这行代码的作用是在全局的库文件中导入我们C语言的输入输出库文件。我们的C语言库文件有很多,等会我们还会介绍一种叫做:

#include<stdlib.h>

的头文件

然后导入我们的头文件之后,我们再来讲解main方法。main方法基本上是我们C语言基础中最重要的部分了,一个C语言的源文件就相当于我们有一个瓶子,然后main方法就是瓶子的瓶口,我们一切业务的实现都是要从main方法开始实现的。
main方法里面放了我们的数据和函数执行的入口,其实main方法与其说是方法,不如说其是函数更好一点。我接下来将把main方法称作main函数,记住,这很重要!

行,基本的main方法和头文件讲完之后,我们开始讲结构体了,结构体真的是个非常简单的概念,定义结构体也是非常简单的一件事,下面直接展示代码:

#include<stdio.h>
struct Node{int data;struct Node *next;
};
int main(){printf("hello world!");return 0;
}

上面的这段代码呢,告诉了我们结构体该怎么定义

struct 结构体名{结构体的参数1结构体的参数2......结构体的参数N
};

记住,结构体定义之后,他的末尾一定要加上一个分号,不然的话编译时会报错!

然后我们再来聊下什么是结构体?为什么要定义结构体?

定义一个结构体变量其实和定义一个int,float,double变量一样。如果你定义一个int(整型,我相信现在大二了整型,浮点型,双精度浮点型的概念大家都是应该要有的,如果这方面搞不懂的话可以来401咨询我)

在芸芸众生中,我们每个人都有自己的一些属性,每个人都有一个或者多个属于自己的标签。就如同游戏英雄联盟中的英雄一样,一个英雄有他的血量,蓝条,攻击力。。。等等一系列属性,然后这些属性都有一个特定的数值来标识他们的强弱,比如说我现在定义一个结构体hero:

struct Hero{//英雄的名字String name;//英雄的血量double Health_value;//攻击力int aggressivity;
};

然后我们通过在main方法中创建一个英雄变量。

#include<stdio.h>
struct Hero{//英雄的名字char* name;//英雄的血量double Health_value;//攻击力int aggressivity;
};
int main(){//定义一个struct Hero的英雄变量烬struct Hero jin;jin.name="烬";jin.Health_value=470;jin.aggressivity=81;printf("烬的名字:%s\n",jin.name);printf("烬的生命值:%lf\n",jin.Health_value);printf("烬的攻击力:%d\n",jin.aggressivity);return 0;
}

上面的例子中,我们给烬赋值,然后进行了输出,下面是运行结果:

然后在上面的一个简单例子中,我们同时也展示了怎么调用结构体中的元素。上面我们使用的是点号取值,就是结构体名后面加一个点号,然后后面加上结构体中的一个参数值,就可以取出这个参数值中的数据,或者改变这个元素的值。

改变值:

jin.name="jin";

获得值:

printf("%s",jin.name);

然后研究上面的代码,我们同时也发现:

struct  Hero{//英雄的名字char* name;//英雄的血量double Health_value;//攻击力int aggressivity;
};

我们不能直接通过Hero来定义一个Hero结构体的变量,我们在定义一个Hero变量之前要先在Hero之前加一个struct

struct Hero jin;

这让我看上去觉得非常的不习惯,我现在想要直接就用Hero就创建一个变量,把struct给省略掉,接下来我们看代码实现:

#include<stdio.h>
typedef struct hero{//英雄的名字char* name;//英雄的血量double Health_value;//攻击力int aggressivity;
}Hero;
int main(){//定义一个struct Hero的英雄变量烬Hero jin;jin.name="烬";jin.Health_value=470;jin.aggressivity=81;printf("烬的名字:%s\n",jin.name);printf("烬的生命值:%lf\n",jin.Health_value);printf("烬的攻击力:%d\n",jin.aggressivity);return 0;
}

如果我们想要省略掉struct,就必须得要用到我们的typedef关键字,typedef的作用是重命名变量名类型,我们还可以这样:

typedef int dataType
typedef double floatType

这样我们就可以用dataType和floatType来定义新的int和double变量,就是让他们也有同样的代表性。

那么我们接下来理解同样的typedef struct hero是不是也简单了呢?

typedef struct hero{//英雄的名字char* name;//英雄的血量double Health_value;//攻击力int aggressivity;
}Hero;

好了,以上

C语言结构体,超简单入门版!相关推荐

  1. C语言结构体实现简单通讯录管理系统

    效果如图: 代码及详情如下: #include<stdio.h> #include<string.h> #include<stdlib.h>/*通讯录管理 问题描述 ...

  2. C语言——结构体(初阶版)

    1.定义和使用结构体变量 结构体的基础知识 结构是一些值的集合,这些值称为成员变量.结构的每个成员可以是不同类型的变量. 自己建立结构体类型 结构的成员可以是标量.数组.指针,甚至是其他结构体. st ...

  3. C语言结构体和结构体指针的简单用法

    C语言结构体和结构体指针的简单用法 这里总结一下自己的学习笔记,关于C语言当中的结构体指针的用法,以及结构体简单使用. 简单介绍一下今天出场的嘉宾–>结构体和结构体指针 什么是结构体: 1,定义 ...

  4. C语言超简单入门——基础知识

    C语言超简单入门--基础知识 一.进制转换 进制:二进制.八进制.十进制.十六进制 进制的脚标: 二进制:B 如:101B 八进制:Q 如:12Q 十进制:D 如:10D 十六进制: H 如:123H ...

  5. c语言2个字符串可以相互赋值吗,c语言结构体2之变量赋值于字符串

    #include #include struct dangdang { char email[]; char name[]; char addr[]; int num; int bugnum; cha ...

  6. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  7. c语言结构体变量所占字节计算,【C语言】结构体占用字节数及存储与空间分配...

    我们都知道在数据类型中,char类型占1个字节,short占2个字节,int占4个字节,long占8个字节等等. 在计算结构体大小时需要考虑其内存布局,结构体在内存中存放是按单元存放的,每个单元多大取 ...

  8. Go语言结构体(struct)

    Go 语言通过用自定义的方式形成新的类型,结构体是类型中带有成员的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. Go 语言中的类型可以被实例化,使用new或&a ...

  9. ARM汇编语言实现peek()_ARM汇编之访问C语言结构体数据

    前言 本文的写作目的在于装逼,没有要产生实际价值的意思. 前几天在做编译器的项目,有一个项目团队成员一直在问我ARM汇编能不能读C语言的结构体.我心想,我这生成ARM汇编的代码是用C++写的呀,又不是 ...

最新文章

  1. R-CenterNet:用CenterNet对旋转目标进行检测
  2. 设置Eclipse中的tab键为4个空格的完整方法
  3. Android中的Selector的用法
  4. mysql 隔离级别和锁相关
  5. 扫地机器人湿地_口碑最好,用户认可度最高,浦桑尼克新款扫地机M7 MAX上手体验...
  6. Python3调用MySQL数据库中的数据
  7. 测试小白入门必知必会的8个测试工具
  8. linux 键盘 数值,键盘数值对照表
  9. Spark SQL 中UDF的讲解
  10. idea 分享代码位置
  11. 蓝桥杯 ALGO-50 算法训练 数组查找及替换
  12. Python:笨方法学 Python3-课程 41 笔记
  13. C语言为内存分配空间(代码段、数据段、bss段、存储类、变量的生命周期)
  14. 临近空间大气环境特性
  15. Elgamal数字签名原理
  16. 校验和checksum、哈希值是什么?
  17. win7 thinkpad 屏幕旋转 快捷键 与 eclipse冲突
  18. 575. 分糖果【我亦无他唯手熟尔】
  19. android打包报错Detected multiple Kotlin daemon sessions
  20. 18. SELinux管理

热门文章

  1. google的protocal buffers(proto2)之(一)
  2. JSON-Java(org.json) 简介
  3. recv函数和send函数
  4. android 1s,OPPO R11s将火速升级安卓8.1,官方内测开启
  5. 数据库中的索引优缺点分析
  6. Maple中的sequence, set和list
  7. 【番外】遇到autoCAD问题,大意失荆州,冒汗定位一星期
  8. 技术人修炼之道阅读笔记(一)让自己更值钱的5个能力
  9. [转载]打工辛酸路:我是一朵飘零的花之50
  10. 背包DP | 01背包问题