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

C语言中的结构体,结构体中数组初始化与赋值原作地址:https://www.cnblogs.com/zhangfeionline/p/5913905.html最近写c语言中的结构体遇到了些问题,从网上找了些资料如下:结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里暂不讨论;1.结构体的定义和赋值结构体是可以直接初始化的,在定义的时候,就可

大家好,又见面了,我是你们的朋友全栈君。

最近写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

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161042.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • FLAG_ACTIVITY_CLEAR_TOP和singleTask的区别

    FLAG_ACTIVITY_CLEAR_TOP和singleTask的区别Activity的Flags的设置,可以让Activity的运行具有一些特殊的特性,比如有些可以产生和启动模式相同或相似效果的,还有比如Activity在非前台的时候,也不会保存后台的历史列表中。本文重点分析FLAG_ACTIVITY_CLEAR_TOP,也简单介绍一下其它几个常用的Flag以及使用场景FLAG_ACTIVITY_NEW_TASK将Activity指定为singleTas…

    2022年7月17日
  • PID算法原理 一图看懂PID的三个参数

    PID算法原理 一图看懂PID的三个参数找了好久这一篇算是很容易看懂的了推荐给大家写的十分清楚原文作者DF创客社区virtualwizLZ以前有个小小的理想,就是让手边的MCU自己“思考”起来,写出真正带算法的程序。前段时间做一个比赛项目的过程中,对经典、实用的PID算法有了一点点自己的理解,就写了这些,与大家分享因为LZ想尽办法,试着用最易于理解的语言说清楚原理,不做太多的理论分析。(LZ文学功底不行),所以…

    2022年6月5日
  • listview排序功能_vba listview 控件

    listview排序功能_vba listview 控件usingSystem.Collections; privatevoidlistView2_ColumnClick(objectsender,ColumnClickEventArgse)//排序{   this.listView2.ListView

    2022年10月4日
  • 注会综合记忆锦囊:手绘PEST模型,记忆可以这样玩「建议收藏」

    注会综合记忆锦囊:手绘PEST模型,记忆可以这样玩「建议收藏」【】综合的记忆量非常庞大,且看小萌有妙招,通过“关键词”和“手绘图”带你一起巧记忆。一、PEST宏观环境分析:4项1.政治因素:4项(1)执政党所持的态度和推行的基本政策(2)企业所在国家和地区的政局稳定状况(3)政府行为对企业的影响(4)各政治利益集团对企业活动产生的影响2.法律环境因素:4项(1)国家司法机关和执法机关(2)国际法所规定的国际法律环境和目标国

    2022年5月23日
  • 计算机网络————IP地址分类以及网络地址的计算[通俗易懂]

    计算机网络————IP地址分类以及网络地址的计算[通俗易懂]一,IP地址分类 1.二进制与十进制的关系 2,IP地址的地址结构及分类IP地址结构:网络号+主机号网络号:中主机中指明中的所在物理网络的编号主机号:中中中主机在物理网络中的编号 IP地址分类:A类(大型),B类(中型),C类(小型),D类(组播),E类(保留地址-研究时使用) A类地址默认掩码:255.0.0.0/8B类地址默认掩码:2…

    2022年6月6日
  • 超详细MySQL安装及基本使用教程[通俗易懂]

    超详细MySQL安装及基本使用教程[通俗易懂]一、下载MySQL首先,去数据库的官网http://www.mysql.com下载MySQL。点击进入后的首页如下: 然后点击downloads,community,选择MySQLCommunityServer。如下图: 滑到下面,找到RecommendedDownload,然后点击gotodownloadpage。如下图: 点击download进入下载页面选择No…

    2022年4月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号