C语言字符串可以用字符数组表示,也可以用字符指针表示。其中,字符数组表示的字符串需要初始化,初始化方式有多种。下面就从字符数组表示字符串的方面,详细讲解C语言字符串初始化的完整使用攻略。
字符数组初始化
字符数组初始化有以下三种方式:
1. 直接赋值
字符数组初始化可以直接赋值,如下:
char str[] = "hello";
这里将字符串”hello”赋值给字符数组str,编译器会为字符数组str分配足够的空间存储字符串,末尾自动加上零终止符’\0’。注意,由于编译器会自动计算出字符数组的长度,所以字符数组赋值时不能使用变量,如下是错误的写法:
char s[] = "hello";
int len = strlen(s); // 错误,编译器无法知道字符数组的长度
2. 使用字符串长度初始化
字符数组初始化还可以通过字符串的长度,给字符数组赋初值,代码如下:
char str[10] = {'h', 'e', 'l', 'l', 'o', '\0'};
字符串长度为5,需要存储的字符包括”h”、”e”、”l”、”l”、”o”和字符串末尾的零终止符’\0’,所以字符数组的长度至少为6。代码中定义字符数组str的长度为10,为了避免越界,末尾用零终止字符’\0’补足空间。
3. 使用常量字符串初始化
字符数组初始化还可以使用常量字符串初始化,代码如下:
char str[10] = "hello";
这里将常量字符串”hello”赋值给字符数组str,编译器会为字符数组str分配足够的空间存储字符串,末尾自动加上零终止符’\0’。需要注意的是,字符数组的长度需要至少比常量字符串长度大1,因为常量字符串末尾的零终止符也需要空间。
示例说明
下面分别举两个例子,演示以上三种初始化方式的用法。
示例一:直接赋值
#include<stdio.h>
#include<string.h>
int main() {
char str[] = "hello"; // 直接赋值
printf("字符串长度为:%d\n", strlen(str)); // 输出字符串长度
printf("字符串内容为:%s\n", str); // 输出字符串内容
return 0;
}
上述代码中,定义字符数组str并直接将”hello”赋值给它,通过strlen()函数可以计算出字符串长度,用%s格式化输出字符串内容,执行结果如下:
字符串长度为:5
字符串内容为:hello
示例二:使用字符串长度初始化
#include<stdio.h>
#include<string.h>
int main() {
char str[10] = {'h', 'e', 'l', 'l', 'o', '\0'}; // 使用字符串长度初始化
printf("字符串长度为:%d\n", strlen(str)); // 输出字符串长度
printf("字符串内容为:%s\n", str); // 输出字符串内容
return 0;
}
上述代码中,定义字符数组str的长度为10,通过{‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’}的形式,将字符数组初始化为字符串”hello”,执行结果如下:
字符串长度为:5
字符串内容为:hello
以上就是C语言字符串初始化的完整使用攻略,并附带了两个相关示例。