您的位置:首页 > 编程语言 > C语言/C++

C语言学习——一种新的结构体赋值方法

2016-09-04 17:59 253 查看
今天在编写C语言代码时发现了一种结构体赋值的新方法,记录下来提醒自己

首先定义一个结构体

<span style="font-size:14px;">typedef struct _person_struct {
char m_cName[20];
int m_iAge;
char m_cWork[20];

}PERSON_STRUCT;</span>

在主程序中调用:

int main(int argc, char **agrv)
{
PERSON_STRUCT stPerson1 = {
.m_cName = "ZhangSan",
.m_iAge = 15,
.m_cWork = "teacher",
};
printf("stPerson name = %s, age = %d, work = %s\n", stPerson1.m_cName, stPerson1.m_iAge, stPerson1.m_cWork);
return 0;
}
注意下面的赋值方法是错误的,我刚开始就是这么写的

PERSON_STRUCT stPerson1 = {
.m_cName[20] = "ZhangSan",
.m_iAge = 15,
.m_cWork[20] = "teacher",
};

这样的方式在使用gcc编译时会报错。另外,这种结构体赋值方式仅限C语言中,如果使用g++编译C++代码,这样的赋值方式同样不行。我是从内核源码中发现了这种结构体赋值方式,觉得一目了然,就记录在案,与君共享。

纠正错误:

    前面说.m_cName[20] = "ZhangSan",这个从C语言的角度将就是错误的,只能strcpy(m_cName, "ZhangSan")这样赋值!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言