C99标准的结构体赋值注解
2016-01-21 15:38
127 查看
关于结构体的赋值问题
#include <stdio.h> static struct id_mesg{ char *name; unsigned int age; char *job; }; static struct id_mesg persons[] = { {"bimax", 23, "hero"}, {"deadpool", 34, "marvel"}, {"thor", 65535, "god"}, {.name = "linus", .job = "linuxman"} }; static struct id_mesg per_one = { .name = "gates", .age = 43, .job = "ITman", }; int main(int argc, char **argv) { int i; for(i = 0; i < 4; i ++) { printf("name: %s\t age: %d\t job: %s\n", persons[i].name, persons[i].age, persons[i].job); } printf("name: %s\t age: %d\t job: %s\n", per_one.name, per_one.age, per_one.job); }
程序如上所示。
static struct id_mesg persons[] = { {"bimax", 23, "hero"}, {"deadpool", 34, "marvel"}, {"thor", 65535, "god"}, {.name = "linus", .job = "linuxman"} };该段的前三个为结构体赋值常用方法,最后一个是来自C99标准,表示指定初始化,使用前缀.加变量名称进行定向赋值
如上所示,分别对name赋值为字符串“linus”,job赋值为字符串“linuxman”,可以空下age不进行赋值这使得结构体的赋值更加便捷,而且可以单独对某一个变量进行赋值而不需要管其他的变量。
倘若我们使用前三项的方法只对age和job进行赋值是比较困难的,但是使用最后一个初始化形式对这两者赋值则是非常简单,这个特性常常用在结构体变量非常多而且不需要全部进行初始化的地方,在linux的内核当中可以看到有大量的这种方法赋值的语句。
我们也可以单独进行一个结构体的赋值,如下
static struct id_mesg per_one = { .name = "gates", .age = 43, .job = "ITman", };
上述程序运行之后的结果是:
name: bimax age: 23 job: hero
name: deadpool age: 34 job: marvel
name: thor age: 65535 job: god
name: linus age: 0 job: linuxman
name: gates age: 43 job: ITman
相关文章推荐
- 短网址ShortUrl的算法
- JUnit + Mockito 单元测试(二)(good)
- Linux服务器通过rz/sz轻松上传下载文件
- atitit.人脸识别的应用场景and使用最佳实践 java .net php
- atitit.人脸识别的应用场景and使用最佳实践 java .net php
- android技巧(五)一个异步+接口回调的例子
- javascript 分离全局变量
- 互联网常用名词解释
- ASP.NET中application对象的用法(面试题)
- if...else
- HTML开发过程中一些注意事项
- 【Github使用感触之一】使多文件多版本变得简单
- 单片机论坛 学习单片机用
- mysql 基础
- 拥抱变化的 2015
- Java继承和多态===Java instanceof 运算符
- 传输线终端阻抗匹配
- Android数据存储
- The HR user creates a stand-alone procedure as follows and grants the EXECUTE privilege on the proce
- mapreduce中获取输入文件的路径