C语言学习——一种新的结构体赋值方法
2016-09-04 17:59
253 查看
今天在编写C语言代码时发现了一种结构体赋值的新方法,记录下来提醒自己
首先定义一个结构体
在主程序中调用:
这样的方式在使用gcc编译时会报错。另外,这种结构体赋值方式仅限C语言中,如果使用g++编译C++代码,这样的赋值方式同样不行。我是从内核源码中发现了这种结构体赋值方式,觉得一目了然,就记录在案,与君共享。
纠正错误:
前面说.m_cName[20] = "ZhangSan",这个从C语言的角度将就是错误的,只能strcpy(m_cName, "ZhangSan")这样赋值!!
首先定义一个结构体
<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")这样赋值!!
相关文章推荐
- 一种快速为结构体赋值得方法
- 有一种方法给 XSLT 中变量进行赋值,是保持状态的那种
- java 布尔值一种赋值方法
- 为结构体中函数指针赋值的两种方法
- 为结构体中函数指针赋值的两种方法
- 为结构体中函数指针赋值的两种方法
- designated initializer:一种特殊的结构体初始化方法
- c 结构体中存在指针,指针的不同赋值方法
- 为结构体中函数指针赋值的两种方法
- 为结构体中函数指针赋值的两种方法
- android ndk 给结构体赋值的方法
- 从Linux的ext2文件系统源码学到一种初始化结构体的新方法
- 计算结构体成员偏移地址的一种方法
- C#.Net 调用方法,给参数赋值的一种技巧
- linux kernel 结构体赋值方法{转载}
- 结构体变量的赋值方法
- 带参构造函数为结构体对象数组赋值的方法
- android ndk 给结构体赋值的方法
- 为结构体中函数指针赋值的两种方法
- 函数指针在结构体中的赋值方法