一个C语言结构体的有关问题,有些不理解
一个C语言结构体的问题,有些不理解
定义了一个结构体:
然后需要对前三个变量进行初始化,初始化如下:
就是注释 保留 的那个地方,有什么作用?加的那个大括号目的是什么?
------解决思路----------------------
保留的,一般只是起一个占用空间的作用,以备后用。
大括号是用来初始化结构体里边的数组成员para_data的。
------解决思路----------------------
对于这种连续内存块的初始化, c99标准和c++11标准都有不同的规定。
c99
struct T{
int a;
int b;
double c;
};
struct T t[ ] = {
{1, 2, 0.5},
{5, 12, 78.00},
{45, 12, 44}
}; //这样就定义了一个结构体数组并且赋了初值
里面的{} 相当于这样
int arr[10] = {0}; //对他进行初始化
------解决思路----------------------
“变量赋值”和“变量初始化”不是一回事!
“变量赋值”发生在运行期,其写法遵循赋值语法规定。
“变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
定义了一个结构体:
typedef struct __sys_storage_struct__
{
unsigned int magic_word;
unsigned int crc;
unsigned int versionDate;
unsigned int para_data[SRM_PARA_NUMBER-3];
}ROM_PARA, *P_ROM_PARA;
然后需要对前三个变量进行初始化,初始化如下:
ROM_PARA g_sys_register_para =
{
TAG_WORD_TABLE_MAP,
0, //0: checksum
0x20141101, //version
//PARAMETER SECTOR
{
0, //reserved
}
};
就是注释 保留 的那个地方,有什么作用?加的那个大括号目的是什么?
------解决思路----------------------
保留的,一般只是起一个占用空间的作用,以备后用。
大括号是用来初始化结构体里边的数组成员para_data的。
------解决思路----------------------
对于这种连续内存块的初始化, c99标准和c++11标准都有不同的规定。
c99
struct T{
int a;
int b;
double c;
};
struct T t[ ] = {
{1, 2, 0.5},
{5, 12, 78.00},
{45, 12, 44}
}; //这样就定义了一个结构体数组并且赋了初值
里面的{} 相当于这样
int arr[10] = {0}; //对他进行初始化
------解决思路----------------------
“变量赋值”和“变量初始化”不是一回事!
“变量赋值”发生在运行期,其写法遵循赋值语法规定。
“变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。