一、直接初始化
对于较小且已知内容的字符数组,在定义时可以直接进行初始化赋值:
c
char str1[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
上述代码创建了一个包含5个可见字符加上一个隐藏的\0字符在内的字符数组str1,用于表示字符串"Hello"。
二、字符串字面量初始化
更常见的是使用双引号括起来的字符串来初始化字符数组:
c
char str2[] = "World";
编译器会自动为这个字符串添加结尾的'\0'符号,所以实际上这里分配的空间不只有5个元素,而是包括了隐含的第六个'\0'字符。
三、动态长度初始化
如果不清楚具体要存放的字符串长度,则可以省略数组大小,由系统依据初始字符串的实际长度加1(算上'\0')来自动生成合适的数组尺寸:
c
char str3[] = "Programming";
// 实际上,此处的str3具有12个元素:{'P','r','o','g','r','a','m','m','i','n','g','\0'}
四、部分初始化与剩余默认填充
当明确指定数组容量但只对一部分位置做初始化时,未被显式初始化的位置会被填充值为零的各种数据类型的默认值——对应于字符数组即为空字符('\0'):
c
char str4[15] = {"Welcome!"};
// 此处尽管仅给出了7个有效字符以及末尾的'\0',但是整个数组有额外8个单元格用'\0'填充。
总结来说,C语言提供了多种灵活的方式来初始化字符数组以便高效地操作文本或字符串型数据。理解并熟练掌握这些技巧是编写健壮高效的C程序的基础之一。同时需要注意,虽然可以在运行过程中修改字符数组的内容,但由于其静态性,一旦声明后就不能改变其所占用内存的整体大小。