字符串的概念
·字符串是有序字符的集合
.字符串是程序中基本元素之一
.C语言中没有字符串的概念
-C语言中通过特殊的字符数组模拟字符串
-C语言中的字符串是以'0'结尾的字符数组
在C语言中,双引号引用的单个或多个字符是一种特殊的字面量
-存储于程序的全局只读存储区
-本质为字符数组,编译器自动在结尾加上‘0’字符
`char ca[] = {'H','e','l','l','o'}; //字符
char sa[] = {'W','o','r','l','d','0'};//字符串
char ss[] = "Hello world"; // 字符串
char* str = "Hello world"; //
%s是输出字符串
例子30-1:
`#include "stdio.h"
int main()
{
char ca[] = {'H','e','l','l','o'}; //字符
char sa[] = {'W','o','r','l','d','\0'};//字符串
char ss[] = "Hello world"; // 字符串
char* str = "Hello world"; //
printf("%s\n",ca);
printf("%s\n",sa);
printf("%s\n",ss);
printf("%s\n",str);
return 0;
}`
输出结果:
Hello烫烫烫?孝//乱码
World
Hello world
Hello world
解析:第一个输出错误结果是因为%s输出字符串,但是数组ca定义的是字符
-字符串字面量的本质是一个数组
-字符串字面量可以看作常量指针
-字符串字面量中的字符不可改变
-字符串字面量至少包含一个字符
%c是单个字符输出
例子30-2:
#include "stdio.h"
int main()
{
char b = "abc"[0];
char c = *("123" + 1);
char t = *"";
printf("%c\n",b);
printf("%c\n",c);
printf("%d\n",t);
printf("%s\n","Hello");
printf("%p\n","world");
}
输出结果:
a
2
0
Hello
00907020
分析:“abc"是一个没有名字的字符串数组,"abc"[0];为第零个元素为a
字符串的长度
例子30-3:
`#include "stdio.h"
include "string.h"
int main()
{
char s[] = "Hello\0world";
int i = 0;
for(i = 0;i<sizeof(s)/sizeof(char);i++);
{
}
printf("%s\n",s);
printf("%d\n",strlen(s));
printf("%d\n",strlen("123"));
return 0;
}`
输出结果:
Hello
5
3
·字符串的长度就是字符串所包含字符的个数
·字符串长度指的是第一个'0'字符前出现的字符个数
·通过'0'结束符来确定字符串的长度
·函数strlen用于返回字符串的长度
小结:C语言中通过字符数组模拟字符串
·C语言中字符串使用'0'作为结束符
·字符串字面量的本质为字符数组
·字符串相关函数都依赖于结束符“0”
`
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。