最近写c语言中的结构体遇到了些问题,从网上找了些资料如下:

结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里 暂不讨论;

1.结构体的定义和赋值

结构体是可以直接初始化的,在定义的时候,就可以初始化,而且如果你的结构体中恰好有字符数组的话,这个时候初始化是不错的选择,原因很简单,字符数组只能定义的时候直接初始化

后来就不可以了,后来你就只能用strcpy函数来拷贝初始化了。

struct 结构体名
{数据类型   成员名1;数据类型   成员名2;:数据类型   成员名n;
};

2.定义结构体变量的3种方法:

第1种:

struct 结构体名
{
成员列表;
}变量名1;

第2种:

struct 结构体名
{
成员列表;
};
struct 结构体名 变量名2;

第3种:

typedef struct 结构体名
{成员列表;
}结构体别名;结构体别名 变量名3;

访问结构体成员的2种方式:
1、直接访问:结构体变量名.成员名

2、指针访问:结构体变量指针->成员名

3.结构体初始化操作

1. struct 结构体名 变量名 = {0,0,0,...};2. struct 结构体名 变量名 =
{.成员1 = 0,.成员2 = 0,.成员3 = 0,...
};3. struct 结构体名 变量名 =
{成员1: 0,成员2: 0,成员3: 0
};

第2、3种方式成员顺序可以打乱,甚至可以只初始化其中某几个成员。3种初始化的方式在linux下使用GCC编译均可通过。

4.结构体定义时的嵌套

1、内部的结构体名称定义齐全

struct student
{int a;int b;struct other{int c;int d;}name;
};引用c成员的方式: 变量.name.c
2、 内部的结构体通常定义为无名结构体
struct student
{int a;int b;struct{int c;int d;};
};引用c成员的方式:变量.C

C语言中的结构体,结构体中数组初始化与赋值相关推荐

  1. c语言数组初始化未赋值则默认是任意还是0?

    https://bbs.csdn.net/topics/310142759 一般来说 全局变量.静态变量处于数据区,默认初始化为0 (如果指定初始值,则为指定的值) 而局部变量处于堆栈区,其数值是随机 ...

  2. c语言定义不定长数组初始化_大学C语言期末考试练习题(带详解答案)(1)

    链接:https://pan.baidu.com/s/1d2Bb1vNTyBNpFGneIAicVw 提取码:y7uw 单项选择题 C语言的基本单位是 函数 1.(A  )是构成C语言程序的基本单位. ...

  3. C语言结构体与C++中结构体和类的区别

    在C++中除了类中可以有构造函数和析构函数外,结构体中也可以包含构造函数和析构函数,这是因为结构体和类基本雷同,唯一区别是,类中成员变量默认为私有,而结构体中则为公有.注意,C++中的结构体是可以有析 ...

  4. 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )

    文章目录 一.学生管理系统 二.代码示例 一.学生管理系统 前两篇博客 [C 语言]文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 ) [C 语言 ...

  5. 【C 语言】结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )

    文章目录 一.结构体中嵌套二级指针 1.结构体中嵌套二级指针 类型声明 2.为 结构体内的二级指针成员 分配内存 3.释放 结构体内的二级指针成员 内存 二.完整代码示例 一.结构体中嵌套二级指针 1 ...

  6. C语言中函数如何返回结构体?

    //#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" #inclu ...

  7. c语言结构体在内存中的存储,C语言结构体在内存中的存储情况探究------内存对齐...

    条件(先看一下各个基本类型都占几个字节): voidsize_(){ printf("char类型:%d", sizeof(char)); printf("int类型:% ...

  8. c语言结构体共用体枚举实例程序,10-C语言结构体-共用体-枚举

    结构体是什么? 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的,而结构体是用于保存一组不同类型的数组 定义结构体 在使用结构体之前必须先定义结构体类型,因为C语言不知道你的结构体中需要 ...

  9. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

最新文章

  1. 《SQL与关系数据库理论——如何编写健壮的SQL代码》一第3章
  2. JavaScriptjQuery.变量作用域
  3. Quartz.Net实现作业定时调度详解
  4. Skywalking 结束孵化,成为 Apache 基金会顶级项目
  5. python数据结构与算法13_python 数据结构与算法 (13)
  6. 手机端召唤Debug
  7. 华为将推出智能显示屏产品:不同于传统电视机
  8. 阿里发力线下渠道,腾讯京东该如何打破其流量优势?
  9. 如何制作高效率的数据可视化大屏
  10. 1.5 推荐优秀书籍 - 网站重构与Web标准设计 - 学习笔记
  11. mybatis SqlSessionDaoSupport的使用(附代码下载)(转)
  12. 编译原理期末试题(8套含答案)
  13. 哪些人需要在三九天调理体质?什么情况需要泡三九药浴?
  14. power bi日期表相对_在Power BI中使用日期维度表
  15. 056.单链表就地逆置
  16. iOS自己总结的超级详细分解富文本大全(AttributedString),图文混排很轻松
  17. 实现iframe嵌套bilibili视频
  18. Clickhouse 生成日历表
  19. 数据科学库(HM)(Day2)——matplotlib常用统计图
  20. 是程序员都可能用到版本控制,如何使用它?如何在Vim中使用Git?

热门文章

  1. 【计算机视觉】全景相机标定(MATLAB/opencv)
  2. Qt::Q_DECLARE_METATYPE
  3. android 添加 iconv 支持
  4. HTML5的input增加哪些type
  5. [Java学习] 最小生成树——Prim算法
  6. Python生成随机数和numpy生成随机数
  7. 技术不够硬?90%的程序员都错了!
  8. 拉格朗日粒子扩散模式FLEXPART,在大气污染溯源中的应用
  9. 如何对复杂网络建模所需要的数据进行预处理
  10. 叶念琛告诉你什么是爱情。。。