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

 

 

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Iocomp Ultra Pack ActiveX 5.12[通俗易懂]

    Iocomp Ultra Pack ActiveX 5.12[通俗易懂]Iocomp的ActiveX/VCLStdPack是一个包含29个控件的套件,老版本Iocomp激活成功教程版很多,用于创建使用ActiveX或VCL开发环境的专业仪器应用程序。这些控件可用于科学、工程、医疗、石油和天然气、半导体、工厂自动化、航空航天、军事、机器人、电信、楼宇和家庭自动化、HMI、SCADA以及数百种其他类型的应用。所有Iocomp控件均启用OPC。如果您的项目需要OPC连接,您可以将任何属性连接到您的OPC项目/标签。所有连接都可以使用Iocomp属性编

  • 【风马一族_代码英语】代码英语之一

    【风马一族_代码英语】代码英语之一

  • 9.6 第九章小结

    9.6 第九章小结

  • sql第九章简答题_sql语句declare用法

    sql第九章简答题_sql语句declare用法文章目录第二十六章SQL命令DECLARE大纲参数描述游标名称通过游标更新示例第二十六章SQL命令DECLARE声明游标大纲DECLAREcursor-nameCURSORFORquery参数cursor-name-游标的名称,必须以字母开头,并且仅包含字母和数字。(游标名称不遵循SQL标识符约定)。游标名称区分大小写。它们受其他命名限制的约束,如下所述。query-定义游标结果集的标准SELECT语句。此选择可以包括%NOFPLAN关键字,以指定应忽略此查询的

  • redis 配置密码验证_spring redis配置

    redis 配置密码验证_spring redis配置redis配置密码1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到#requirepassfoobared去掉行前的注释,并修改密码为所需的密码,保存文件requirepassmyRedis重启redissudoserviceredisrestart#或者sudoservicerediss

  • JDBC解析7_Blob

    JDBC解析7_Blob

发表回复

您的电子邮箱地址不会被公开。

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