C语言特殊语法(五)另类数组
2014-06-21 00:00
218 查看
平常看到的C语言代码中,数组的写法几乎千变一律,以至于我们以为C语言的数组就只能那么写。在C99标准中,其实说明了数组的另外一种用法,代码如下所示:
当然,还可以使用枚举值:
以上这样的代码或许还不是太有意思,那么看看结构体的写法吧:
哈,这样的代码是不是很有趣?用在合适的场合还是非常有用的!
代码示例:
const char hello[] = { [0] = 'h', [1] = 'e', [2] = 'l', [3] = 'l', [4] = 'o' };
当然,还可以使用枚举值:
enum Value { V_0, V_1, V_2, V_3, V_4 }; const char hello[] = { [V_0] = 'h', [V_1] = 'e', [V_2] = 'l', [V_3] = 'l', [V_4] = 'o' };
以上这样的代码或许还不是太有意思,那么看看结构体的写法吧:
struct Type { int v; }; struct Type type[] = {[0].v = 1, [1].v = 2, [2].v = 3};
哈,这样的代码是不是很有趣?用在合适的场合还是非常有用的!
代码示例:
#include <stdio.h> typedef void (* CmdFunc)(); enum Cmd { CMD_HELP = 'h', CMD_VERSION = 'v', }; void help_for_help(); void help_for_version(); CmdFunc CmdList[] = { [CMD_HELP] = help_for_help, [CMD_VERSION] = help_for_version }; void help_for_help() { printf("Usage: test [options] ...\n [-h] show help information\n [-v] show version information"); } void help_for_version() { printf("Version 1.0\n"); } int main(int argc, char *argv[]) { if (argc > 1 && (*argv[1] == '-')) { if (*(++argv[1]) == CMD_HELP || *(argv[1]) == CMD_VERSION) { CmdList[*argv[1]](); } } return 0; }
相关文章推荐
- C语言特殊语法(四)另类分支语句
- 另类解读C语言数组的特性
- c语言数组特殊初始化方法
- 【我解C语言面试题系列】009 特殊的去除数组中重复数字问题
- C语言的数组名的特殊情况
- C语言中一类特殊的数组越界!!
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
- C语言特殊语法(六)复合表达式
- C语言特殊语法(三)第三种注释
- C语言数组和指针的语法糖
- C语言特殊语法系列文章
- C语言 数组 新语法
- C语言特殊语法(七)MAIN函数
- 黑马程序员————C语言基本语法(数组、字符串、指针、其他数据类型)
- 神奇的C语言十:数组下标的语法
- 另类解读C语言数组的特性
- 【我解C语言面试题系列】009 特殊的去除数组中重复数字问题
- 另类解读C语言数组的特性
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
- sas数组,数组的语法与一些特殊定义,获取维度大小