(1)、结构体

基本类型       int、double、char、float、short、long等等

复合类型       数组、结构体

指针类型

空类型

1)定义结构体,不会在内存内给分配空间

struct s1 {

char    ch;

int      i;

float   f;

char array[3];

};

struct s2 {

struct s1 s;           //嵌套定义

char    ch;

int      i;

float   f;

};

2)定义结构体变量

struct    s1    varname;

3)#define 与 typedef定义别名替代  struct name

4)结构体初始化

5)结构体赋值

先定义结构体变量,然后用变量.结构体子成员名称

6)指针与结构体

7)字节对齐的概念

变量在内存里排放时有对齐的概念,所谓某个变量是N字节对齐的,就是说该变量的“内存起始地址值”%N = 0;

a、基本类型自身对齐值

基本类型:char 1   short 2   (32bitmachine——int float long   4    double  8)

结构体类型:成员中基本类型的自身对齐值最大的那个值。

b、指定对齐值

使用#pragma pack(N)或__attribute__((aligned(N)))在定义结构体时指定对齐值N。但Gcc对32位机缺省情况下指定对齐值为4。

c、有效对齐值

最终决定数据存放地址方式的值,取值对象为自身对齐值和指定对齐值中较小的那个值。

srtuct s {

char    c;        //1

int       i;        //4    按4对齐

};

那么sizeof(struct s) = 8;

(2)、共用体(联合体)union

各成员在内存中共用一块空间,与结构体在内存中使用空间情况相反。

程序运行时无时不刻在访问内存,深刻理解内存管理机制有利于更好地学习 C

嵌入式软件开发培训笔记——C高级 结构体与共用体相关推荐

  1. 嵌入式软件开发培训笔记——C高级 指针和函数

    1.函数指针 2.指针函数 Int *function(int a,char *b) 函数返回值是一个指针 Int *p;    p = function(c,&d); 附:递归 在一个函体体 ...

  2. 嵌入式软件开发培训笔记——C高级 开发环境

    (1)GNU工具: a)编译工具--GCC.G++: b)调试工具--GDB: c)软件工程工具--make.makefile: d)其他工具--多个目标文件链接成可执行文件的链接器 e)GNU资源: ...

  3. 嵌入式软件开发培训笔记——C高级 预处理类型重定义

    (1)#include (2)#define (3)#if,#else,#elif,#endif 理解c语言中if,else,elseif,但不要忘记在条件编译时要加上endif (4)#ifdef, ...

  4. 嵌入式软件开发培训笔记——Java第二天(运算符、程序结构、数组与继承)

    一.运算符 分割符:,.:.[].() 算术运算符:+.-.*./.%.++.-- 关系运算符:>.<.>=.<=.==.!= 布尔逻辑运算符:!.&.|.^.& ...

  5. 嵌入式软件开发培训笔记——java第五天(API——math/string/集合/日期时间以及java线程)

    目录 掌握命令行参数的使用 掌握Math类中常用的方法 掌握String/StringBuffer/StringBuilder的用法 掌握几种常用集合类的用法 掌握日期和时间处理 1.命令行参数 Ja ...

  6. 嵌入式软件开发培训笔记——Linux下SQLite3数据库编程

    1.基本概念 数据库&数据库管理系统(DBMS) 关系型DBMS和SQL 通用型DBMS&嵌入式DBMS 2.SQLite 简介 命令行操作 库函数编程操作 3.数据库基本概念 1)数 ...

  7. 嵌入式软件开发培训笔记——ARM架构Linux系统下交叉编译环境搭建、NFS、TFTP服务配置及Nandflash的读写

    bootloader原理和开发-->kernel构建-->文件系统/根文件系统(filesystem/rootfs) APP 一.配置交叉编译环境(可参考嵌入式Linux移植与驱动开发co ...

  8. 嵌入式软件开发培训笔记——boot原理与u-boot 基于Cortex_A8核的S5PC100芯片

    一.boot原理 1.解决系统启动 (参考s5pc100手册 --->  2.1节 irom code) The boot loader is divided into the BL0(1st ...

  9. 嵌入式软件开发培训笔记——Java第三天(方法重载、对象的构造与初始化过程分析、封装等)

    一.掌握方法重载(Overload)     同一个类中方法名相同时,称为方法的重载(Overload)     特点:1.参数列表不同                     1)参数类型不同   ...

最新文章

  1. 陈键飞:基于随机量化的高效神经网络训练理论及算法
  2. java io 文件是否存在,代码实例Java IO判断目录和文件是否存在
  3. doc转docx文件会乱吗_Word文档doc与docx的区别
  4. ArcGIS for window mobile 数据打开
  5. 仿京东商城登录页面_京东e卡如何使用?
  6. 广西桂林平均工资是多少?
  7. python列表功能默写_python基础学习——列表list的功能
  8. JAVA_if或者怎么用_Java条件语句if的使用方法介绍
  9. md5加盐(MySQL,PHP)
  10. php敏感代码屏蔽,PHP敏感词汇屏蔽或替换
  11. Windows Server 2008安装nodejs
  12. 基于h a d oop的海量图片存储模型 的分析和设计
  13. BZOJ3654 : 图样图森破
  14. 尚学堂视频笔记一:java面向对象基础和java基础知识
  15. python---酒鬼漫步
  16. oracle新书 罗敏_Oracle Acs资深顾问罗敏 老罗技术核心感悟:分表还是分区?
  17. waf 防火墙限制_WAF防火墙设备指标及参数说明
  18. 关于在WIN10中使用照片查看器的问题
  19. shell - 在文本中的前一行或后一行添加一行内容,指定行前后增加一行内容
  20. Visustin(自动生成流程图)使用说明

热门文章

  1. 全国计算机高新技术考试证书有什么作用?
  2. 第六季完美童模 代言人段沫如 全球赛个人风采展示
  3. 前端骨架屏自动生成方案(很实用!收藏)
  4. does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-
  5. 平淡的感动:先挂电话的那个人……
  6. 使用计算机进行数值运算 可根据需要达到,计算机统考题库.pdf
  7. 明日之后(C++,可复制)
  8. 15.说说你对slot的理解?slot使用场景有哪些?
  9. 铜芯导体正常工作时的温度问题
  10. STC 51单片机46——看门狗测试