对于字符串的引用和赋值:
char message1[] = {‘H’,'e','l','l','o',0};
这个方法当然可行,但除了非常短的字符串,这种方法确实很笨拙。因此,C语言标准提供了一种快速方法用于初始化字符数组:
char message2[] = "Hello";
尽管它看上去像一个字符串常量,实际上并不是,它只是前例的初始化列表的另一种写法。
如果它们看上去完全相同,那么如何分辨字符串常量和这种初始化列表快速**法呢?
划重点:当用于初始化一个字符数组时,它就是一个初始化列表,在其他任何地方,它都表示一个字符串常量;加引号的字符串常量可以理解为是该字符串常量的指针.
这个看起来跟上例很像,但它们具有不同的含义,前者初始化一个字符数组的元素,后者则是一个真正的字符串常量,这个指针被初始化为指向这个字符串常量的存储位置。
大家可以试试,上面message1、message2、message3 是否可以将第一字符改为小写?
message1[0]='h';
message2[0]='h';
message3[0]='h';
|