如果我们定义了一个字符数组:
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语言的字符串,它只是字符数组,因为C语言不能用字符串的方式来做计算。
那么如果我们想定义一个字符串该如何做呢?
只需要在原来的基础上在最后面加上
就可以啦。char word[] = {'H','e','l','l','o','!','
'};
word[0] | H |
word[1] | e |
word[2] | l |
word[3] | l |
word[4] | o |
word[5] | ! |
word[6] | |
-
以0(整数0)结尾的一串字符
"Hello"//由双引号括起来的叫做字符串的常量或者字面量
-
0标志字符串的结束,但它不是字符串的一部分
"Hello"
-
字符串以数组的形式存在,以数组或指针的形式访问
char *s ="Hello,world!";
-
string.h 里有很多处理字符串的函数
-
C语言的字符串是以字符数组的形态存在的
-
不能用运算符对字符串做运算
-
通过数组的方式可以遍历字符串
-
我们要去定义一个变量这个变量表示字符串可以使用以下几种形式
constchar* s
字符串常量
char s[] ="Hello,world!";
会被编译器变成一个字符数组放在某处,这个数组的长度是6,结尾还有表示结束的0
两个相邻的字符串常量会被自动连接起来
- s是一个指针,初始化为指向一个字符串常量
-
由于这个常量所在的地方,所以实际上s是
- 处理参数(作为函数参数的时候) ,但是由于历史的原因,编译器接受不带const的写法
-
-
但是试图对s所指的字符串做写入会导致严重的后果
如果我们要在程序当中写一个字符串的时候我们应该写成数组还是指针呢?可以参考以下几点:
-
数组:这个字符串在这里
- 只有它所指的字符数组有结尾的0,才能说它所指的是字符串
-
指针:这个字符串不知道在哪里
简单的理解就是:
- 如果要构造一个字符串—>数组
- 如果要处理一个字符串—>指针
-
字符串可以表达为char*的形式
-
char*不一定是字符串
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)