您的位置:首页 > 运维架构 > Linux

linux C 结构体struct的定义和初始化

2017-02-04 17:00 239 查看
struct 定义:

struct test

{

int a;

long b;

float c;

char d;

char e[];

}tt1,tt2;//对象声明列表紧跟struct定义

struct test tt3,tt4;//单独声明对象列表

//声明一个没结构体名字的结构体

struct

{

int a;

long b;

float c;

char d;

char e[];

}tt1,tt2;

struct初始化:

1,//按顺序初始化

struct test ={1,2,1.23,'h',"gsdhf"};

2,//乱序

struct test=

{

.a=1,

.b=2,

.c=1.23,

.d='h',

.e="gsdhf"

};

注意:

1,如果存在部分成员没初始化,一般值是系统默认值。

2,如果即存在乱序又存在顺序初始化,顺序初始化始终紧跟上一个乱序成员,即该顺序赋值给上一个乱序成员的下一个成员。如:

    struct test tt=   

    {   

        .c = 18.90,                    

        .b= 2,                    

        0.25  

    };    
0.25的值将付给成员b后的那个成员c,即之前给c赋值18.90将被0.25取代。

当然如果顺序赋值前无乱序赋值,则按struct定义成员的顺序进行赋值,后面的乱序赋值则覆盖前面的顺序赋值。

自定义struct 类型

typedef struct test

{

int a;

long b;

float c;

char d;

char e[];

};

test tt;//test现在是自定义数据类型了,和int,char等数据类型的使用是一样的

tt=

{

.a=1,

.b=2,

.c=1.23,

.d='h',

.e="gsdhf"
};

注意:也可先定义struct test,然后使用语句typedef struct test tt;或者typedef struct test;test tt;来自定义struct数据类型并声明对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: