字符数组的初始化
2013-05-17 15:45
239 查看
摘自《C和指针》
初始化字符数组:
char message[] = {‘H’, 'e', 'l', 'l', 'o', 0};
这个方法当然可行。但除了非常短的字符串,这种方法确实很笨拙。因此,语言标准提供了一种快速方法用于初始化字符数组:
char message[] = "Hello";
尽管它看上去像是一个字符串常量,实际上并不是。它只是前例的初始化列表的另一种写法。
如果他们看上去完全相同,你如何分辨字符串常量和这种初始化列表快速记法呢?它们是根据它们所处的上下文环境进行区分的。当用于初始化一个字符数组时,它就是一个初始化列表。在其他任何地方,它都表示一个字符串常量。
这里有一个例子:
char message1[] = "Hello";
char *message2 = "Hello";
这两个初始化看上去很像,但它们具有不同的含义。前者初始化一个字符数组的元素,而后者则是一个真正的字符串常量。这个指针变量被初始化为指向这个字符串常量的存储位置。
初始化字符数组:
char message[] = {‘H’, 'e', 'l', 'l', 'o', 0};
这个方法当然可行。但除了非常短的字符串,这种方法确实很笨拙。因此,语言标准提供了一种快速方法用于初始化字符数组:
char message[] = "Hello";
尽管它看上去像是一个字符串常量,实际上并不是。它只是前例的初始化列表的另一种写法。
如果他们看上去完全相同,你如何分辨字符串常量和这种初始化列表快速记法呢?它们是根据它们所处的上下文环境进行区分的。当用于初始化一个字符数组时,它就是一个初始化列表。在其他任何地方,它都表示一个字符串常量。
这里有一个例子:
char message1[] = "Hello";
char *message2 = "Hello";
这两个初始化看上去很像,但它们具有不同的含义。前者初始化一个字符数组的元素,而后者则是一个真正的字符串常量。这个指针变量被初始化为指向这个字符串常量的存储位置。
相关文章推荐
- C语言 字符数组初始化方式总结
- Cocos2d-x Array Samples 数组初始化、字符转浮点值,数组纬度转换、字符串分割
- C语言中strlen求字符串长度,求字符数组长度(空字符,数字0,字符0,数组部分初始化)
- C语言指针问题,初始化,赋值,以及字符数组,字符串常量等问题
- 字符数组初始化问题
- 关于字符数组的初始化
- 字符数组初始化和'/0'
- C++字符数组(定义和初始化、赋值和引用)
- 用“字符”初始化数组与用“字符串”初始化数组的一点区别
- C 二维字符数组初始化思考
- C语言字符数组的初始化
- 字符数组的初始化(转)
- C 语言字符数组的定义与初始化
- 用memset函数初始化字符数组
- 关于strlen 和 wstlen_s 操作未初始化的字符数组
- 字符数组初始化
- C语言中字符数组和字符串定义和初始化的问题
- 字符数组与整型数组的初始化和赋值对比
- char[] 字符数组初始化
- 关于字符指针和字符数组初始化的问题