当先锋百科网

首页 1 2 3 4 5 6 7

    字符数组

char word[] = { 'H','e','l','l','o','!' };
word[0]H
word[1]e
word[2]l
word[3]l
word[4]o
word[5]!

    ↑这不是C语言的字符串,因为不能用字符串的方式做计算

    字符串

char word[] = { 'H','e','l','l','o','!','\0' };
word[0]H
word[1]e
word[2]l
word[3]l
word[4]o
word[5]!
word[6]\0

    ▲ 以0(整数0)结尾的一串字符

        ◆ 0或'\0'是一样的,但是和'0'不同

    ▲ 0标志字符串的结束,但它不是字符串的一部分

        ◆ 计算字符串长度的时候不包含这个0

    ▲ 字符串以数组的形式存在,以数组或指针的形式访问

        ◆ 更多的是以指针的形式

    ▲ string.h里有很多处理字符串的函数

    字符串变量

char* str = "Hello";
char word[] = "Hello";
char line[10] = "Hello";

    字符串常量

    ▲ "Hello"

    ▲ "Hello"会被编译器变成一个字符数组放在某处,这个数组的长度是6,结尾还有表示结束的0

    ▲ 两个相邻的字符串常量会被自动连接起来

    【例】

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	printf("你好"
	       "我好"
	       "大家好");
	return 0;
}

程序的结果如下图所示,说明编译器将三个字符串连接起来,“拼合”成一个大的字符串,然后传递给了printf()函数:

如果要使程序代码显得更加“苗条”的风格,除了可以采用上述方案外,还可以这样写:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	printf("你好\
我好");
	return 0;
}

这样在前一行加上一个反斜杠“\”,也可以实现代码的换行而输入内容不换行,但要注意下一行的内容必须顶格书写而不能有缩进,效果如下图所示:

    【总结】

    ▲ C语言的字符串是以字符数组的形态存在的

        ◆ 不能用运算符对字符串做运算

        ◆ 通过数组的方式可以遍历字符串

    ▲ 唯一特殊的地方是字符串字面量可以用来初始化字符数组

    ▲ 以及标准库提供了一系列字符串函数