引言:数据常常以成组的形式存在。在C中,使用结构能够把不同类型的值存放在一起。

结构的声明有两种

1、struct SIMPLE{

int a;

char b;

float c;

};然后用标签SIMPLE去声明结构体变量。

2、typedef struct{

int a;

char b;

float c;

}Simple;然后用Simple去声明结构体变量。

此时Simple是个类型名。而不像上面的SIMPLE是个标签。

结构成员能够是标量、数组、指针甚至是其它结构。

结构成员的直接訪问用点操作符(.)訪问。比如Simple a;a.a或a.b或a.c。

结构成员的间接訪问用->操作符訪问,它是针对结构指针使用的。比如Simple *a。a->a或a->b或a->c。

结构的自引用是结构的成员里包括结构本身,但这样的包括不能是直接包括,而应该包括的是指向该结构的指针。


结构作为函数參数时。一般使用指向结构的指针。向函数传递指针的缺陷在于函数如今能够对调用程序的结构变量进行改动。假设不希望如此。能够在函数使用constkeyword来防止这类改动。

并且。传递结构指针比传递结构本身更有效率。

总结:

1、具有同样成员列表的结构声明产生不同类型的变量。

2、使用typedef为一个子引用的结构定义名字时应该小心。

3、向函数传递结构參数是低效的。

4、把结构标签声明和结构的typedef声明放在头文件里。当源文件须要这些声明时能够通过#include指令包括。

5、结构成员的最佳排列形式并不一定就是考虑边界对齐而浪费内存空间最少的那种排列形式。


【C语言天天练(十)】结构体的更多相关文章

  1. OpenGL ES着色器语言之语句和结构体(官方文档第六章)内建变量(官方文档第七、八章)

    OpenGL ES着色器语言之语句和结构体(官方文档第六章) OpenGL ES着色器语言的程序块基本构成如下: 语句和声明 函数定义 选择(if-else) 迭代(for, while, do-wh ...

  2. Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

    Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面 ...

  3. C++学习(二十五)(C语言部分)之 结构体2

    基本概述: int double char; 定义一个学生类型 int Student 姓名 性别 年龄 简单地说 结构体是一个可以包含不同类型的结构,他是一个自定义的类型. struct 结构体标识 ...

  4. C++学习(二十六)(C语言部分)之 结构体3(联合,枚举)

    结构体 struct 类型定义点运算符 . 变量名.成员 成员是数组的时候不能用等于号赋值箭头运算符 -> 指针->成员 作用 存放多个不同类型的有关联的数据 与结构体类似的类型1.联合作 ...

  5. C++学习(二十四)(C语言部分)之 结构体1

    1.结构体 存放多个不同类型的数据 但是是相关联的 数组 存放多个相同类型的数据 结构体是存放多个相关联的不同类型的数组 struct 定义一个结构体类型 自定义类型 2.结构体定义方式 定义类型最通 ...

  6. C语言_了解下结构体指针

    在C语言中几乎可以创建指向任何类型的指针,包括用户自定义的类型.当然也可以指向结构体,先看一个小案例: #include <stdio.h> #include <string.h&g ...

  7. C语言博客作业-结构体

    一.PTA实验作业 6-2 按等级统计学生成绩 1. 本题PTA提交列表 2. 设计思路 定义i,count存放不及格人数 for i=0 to n-1{ 判断 score的值的范围 if 100&g ...

  8. Go语言规格说明书 之 结构体类型(Struct types)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  9. 【转】C语言中不同的结构体类型的指针间的强制转换详解

    C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险.只要理解了其内部机制,你会发现C是非常灵活的. 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在 ...

随机推荐

  1. 巧用chrome开发者工具

    说明:截图中的Chrome版本为52,不同版本可能略有区别. 常用设置 开发时消除静态资源缓存不能立刻更新的困扰,勾选Disable cache即可 切换颜色显示格式 修改默认颜色显示格式,在Sett ...

  2. 学习和家庭教育 z

    大家好,我是王宁. 今天能站在这里,纯属偶然. 为什么说偶然呢? 因为,南雅是个人才济济的地方,164班是一个优秀的集体. 个人认为,班级前二十几名的同学,时机适宜,谁考班上第一名都有可能. 妈妈对我 ...

  3. 【开发总结】—— BABYLON 项目开发必备系列

    前言:在公司主要使用Babylon.js作为前端引擎,我自己在开发中总结到基本上每一个新项目都会需要这些基本设置. 一.ios兼容:解决镜面反射   如果不加offline,材质中有镜面反射,苹果手机 ...

  4. 【温故知新】——Bootstrap响应式知识点复习

    前言:本文是自己在学习课程中的课程笔记,这里用来温故知新的,并非本人原创. 开发工具 1.记事本,Editplus,... ... 2.Sublime,Dreamweaver 3.Webstorm = ...

  5. es6 includes(), startsWith(), endsWith()

    传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6 又提供了三种新方法. includes():返回布尔值,表示是否找到了参数字符串. sta ...

  6. [Sqlite]--&gt;嵌入式数据库事务理解以及实例操作

    引子: 1. Sqlite在Windows.Linux 和 Mac OS X 上的安装过程 2,嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录 SQLite 事务(Tran ...

  7. poj1649 Rescue(BFS+优先队列)

    Rescue Time Limit: 2 Seconds      Memory Limit: 65536 KB Angel was caught by the MOLIGPY! He was put ...

  8. C# DataTable 总结

    (1)构造函数 DataTable()   不带参数初始化DataTable 类的新实例. DataTable(string tableName)  用指定的表名初始化DataTable 类的新实例. ...

  9. 用命令行执行ROBOT FRAMEWORK

    除了在ride中执行用例,我们也可以通过命令行的形式执行用例. 1.执行一整个项目 pybot+项目路径 2.执行某个测试集 pybot+测试集的路径 3.执行某个测试集里面的某个用例 pybot - ...

  10. 添加w3c验证图片到网站

    1.在http://validator.w3.org/网站验证 2.添加验证通过后的代码至自己的网站 类似<p>    <a href="http://validator. ...