16、字符串

1、字符

就是用’’单引号括起来的单个字符. 如 ‘a’

2、字符串

就是用””双引号括起来的一个或多个字符. 如 “abc”

3、两者的区别
  • 符号不同,字符使用单引号而字符串使用双引号
  • 从数组的角度,字符串是由至少一个字符所组成的一维数组
4、字符串初始化

char 变量名[] = “字符内容”;

5、代码案例
5.1、源代码
1
2
3
4
5
6
7
#include <stdio.h>
int main()
{
char s[] = "xiaobei";
printf("%s\n",s);
return 0;
}
5.2、运行结果

运行结果

6、字符串与数组的关系
6.1、源代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
int main()
{
char s[] = "xiaobei";
printf("s=%p\n",s);
printf("&s=%p\n",&s);
printf("s[0]=%p\n",&s[0]);
for (int i = 0; i < 7; ++i)
{
printf("s[%d]=%c\taddress=%p\n",i,s[i],&s[i]);
}
return 0;
}
6.2、运行结果

运行结果

6.3、总结

从运行结果可以看出,字符串可以看做是一维数组

7、字符串结束符\0

由上面的知识,可知字符串可以看成是一维数组,但是

1
char s[] = "xiaobei";与char s[] = {'x','i','a','o','b','e','i'};是不一样的

7.1、代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
int main()
{
char s[] = "xiaobei";
for (int i = 0; i < 8; ++i)
{
if( s[i] == '\0' ){
printf("已经结束\n");
}else{
printf("s[%d]=%c\taddress=%p\n",i,s[i],&s[i]);
}
}
printf("==================================\n");
char s1[] = {'x','i','a','o','b','e','i'};
for (int i = 0; i < 8; ++i)
{
if( s1[i] == '\0' ){
printf("已经结束\n");
}else{
printf("s[%d]=%c\taddress=%p\n",i,s1[i],&s1[i]);
}
}
return 0;
}
7.2、运行结果

运行结果

7.3、总结

字符串是由\0为结束标志