打印

结构体变量初始化

[复制链接]
2030|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
6019赵文|  楼主 | 2011-5-18 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TAG:结构体,结构体变量,结构体变量声明,结构体变量初始化,结构体变量引用,结构体成员变量引用
TEXT:C语言中引用变量的基本原则是在使用变量前,需要对变量进行定义并初始化。其方法是在定义变量的同时给其一初始值。结构体变量的初始化,遵循相同的规律。
简单变量的初始化形式如下:
数据类型 变量名=初始化值;
例如,定义整型变量a,并给其初始化值10的语句如下
int a=10;
数组的初始化,需要通过一常量数据列表,对其数组元素分别进行初始化,形式如下:
数据类型 数组名称[数组长度]={初始化值1,初始化值2,…, 初始化值n};
例如,定义长度为5的整型数组,并对其初始化的语句如下:
int A[5]={20,21,0,3,4};
结构体变量的初始化方式与数组类似,分别给结构体的成员变量以初始值,而结构体成员变量的初始化遵循简单变量或数组的初始化方法。具体的形式如下:
struct 结构体标识符
{
成员变量列表;

};
struct结构体标识符 变量名={初始化值1,初始化值2,…, 初始化值n };
例如,定义struct Point类型变量,并初始化的语句如下:
struct Point oP1={0.0,0.2,0.3};
struct Point类型变量oP1的三个成员变量的值分别为
oP1.x=0.0,
oP1.y=0.2
oP1.z=0.3
由于定义结构体变量有三种方法,因此初始化结构体变量的方法对应有三种,上面已经介绍了其中的一种形式,其他两种形式如下:
struct Point
{
double x;
double y;
double z;
} oP1={0.0,0.2,0.3}; struct
{
double x;
double y;
double z;
} oP1={0.0,0.2,0.3};
在初始化结构体变量时候,既可以初始化其全部成员变量,也可以仅仅对其中部分的成员变量进行初始化。例如:
struct Student
{
long id;
char name[20];
char sex;
}a= {0};
其相当于a.id=0;a.name=“”;a.sex=‘\0x0’。
仅仅对其中部分的成员变量进行初始化,要求初始化的数据至少有一个,其他没有初始化的成员变量由系统完成初始化,为其提供缺省的初始化值。各种基本数据类型的成员变量初始化缺省值如表9-1所示。


表9-1 基本数据类型成员变量的初始化缺省值


数据类型
缺省初始化值
Int
0
Char
‘\0x0’
float
0.0
double
0.0
char Array[n]
“”
int Array[n]
{0,0…,0}


对于复杂结构体类型变量的初始化,同样遵循上述规律,对结构体成员变量分别赋予初始化值。例如:
struct Line
{
int id;
struct Point StartPoint;
struct Point EndPoint;
}oLine1={0, /*初始化id */
{0,0,0}, /*初始化StartPoint*/
{100,0,0} /*初始化EndPoint */
};
其中常量0用于初始化oLine1的基本类型成员变量id;常量列表{0,0,0}用于初始化oLine1的struct Point类型成员变量StartPoint;常量列表{100,0,0}用于初始化oLine1的struct Point类型成员变量EndPoint。


REF:.txt

相关帖子

沙发
金鱼木鱼| | 2011-5-23 21:57 | 只看该作者
学习了啊又!

使用特权

评论回复
板凳
火箭球迷| | 2011-5-23 22:16 | 只看该作者
基础知识普及:lol

使用特权

评论回复
地板
CC2530| | 2011-5-24 08:27 | 只看该作者
结构体初始化:
typedef struct 
{
int a;
int b;
}item_t;

item_t item=
{
  .a=10,
  .b=20,
};

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

350

主题

1515

帖子

1

粉丝