c语言字符串的初始化
-
不指定长度,没有0结束符。
char c1[] = { 'a','b','c'}; printf("c1 = %s\nsizeof c1 = %d", c1, sizeof(c1)); //输出结果: //c1 = abc烫烫蘦? 鲝 、 //sizeof c1 = 3
-
指定长度,后面没有赋值的元素,自动补数字0(结束符)
char ch1[100] = { 'h','e','l','l','o' }; char ch2[100] = { "hello" }; printf("ch1 = %s\n", ch1); printf("ch2 = %s\n", ch2); //输出结果: //ch1 = hello //ch2 = hello
-
使用字符串初始化,编译器自动在后面补0
char ch1[] = "agjdslgjlsdjg"; printf("ch1 = %s\n", ch1); //输出结果: //ch1 = agjdslgjlsdjg
-
使用 数字0 或者 ‘\0‘ 作为结束符终止输出
char ch1[50] = { '1', 'a', 'b', 0, '7' }; printf("ch1 = %s\n", ch1); //输出结果: //ch1 = 1ab char ch2[50] = { '1', 'a', 'b', '\0', '7' }; printf("ch2 = %s\n", ch2); //输出结果: //ch1 = 1ab //使用0终止输出的错误用法 char ch4[] = "ab0c";//这里的0不是终止符,输出ab0c char ch3[50] = { '1', 'a', 'b', '0', '7' };//里的0不是终止符,输出1ab07 char ch4[2] = { '1', '2', '3', '/0' };//数组越界
-
注意:’\0’后面最好不要连着数字
'\ddd’八进制字义字符
'\xdd’十六进制转移字符
\012相当于\n
例如:
char str[] = "\012abc"; printf("str == %s\n", str); //输出结果: //str ==(注意这里有一个\n换行符号) //abc