关于数组结构体的初始化

来源:互联网 发布:电脑系统必备软件 编辑:程序博客网 时间:2024/05/20 20:05

/////////////////////////////////////////////////////////

该问题涉及到数据类型初始化的问题,现将C语言中数据类型初始化总结如下

1.用{}初始化
简单变量的初始化形式如下: 数据类型 变量名=初始化值;
   例如,定义整型变量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所示。

数据类型
缺省初始化值
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,
{0,0,0},
{100,0,0}
};
其中常量0用于初始化oLine1的基本类型成员变量id;常量列表{0,0,0}用于初始化oLine1的struct Point类型成员变量StartPoint;常量列表{100,0,0}用于初始化oLine1的struct Point类型成员变量EndPoint。


2.用库函数初始化

 常用的函数有两个:memset和bzero。用法如下:

[cpp] view plaincopy
  1. memset(&st, 0, sizeof (st));  
  2. bzero(&set, sizeof (st));  
memset和bzero的主要区别是:参数个数不同;memset 需要三个参数,其中第二个参数是&st指向的内存中要初始化的值,而bzero使用0来初始化


0 0
原创粉丝点击