字符数组
用来存放字符的数组称为字符数组
char str_1[10];
char str_2[5][10];
字符数组实际上是一系列字符的集合,也就是字符串(String)
C语言规定,可以将字符串直接赋值给字符数组(单个字符多次赋值过于麻烦)
char str[14] = {"www.baidu.com"};
char str[14] = "www.baidu.com";
str[0] = 'w'; str[1] = 'w'; str[2] = 'w';
str[3] = '.'; str[4] = 'b'; str[5] = 'a'...
重点!!!
字符数组只有在定义时才能将一整个字符串赋给它,一旦定义完了,就只能单个字符进行赋值了
char str[5];
str = "love"
str[0] = 'l'; str[1] = 'o'; str[2] = 'v'; str[3] = 'e';
字符串结束标志
字符串是一系列连续字符的组合,要想在内存中定位一个字符串,除了要知道它的开头,还要知道它的结尾,通过字符数组名或者字符串名可以找到字符串的开头,在C语言中,字符串总是以'\0' 作为结尾,所以'\0' 也被称为字符串结束标志,或者字符串结束符,也就是说通过此字符可以找到字符串的结尾
'\0' 是 ASCII码表中的第 0个字符,称为空字符(该字符既不能显示,也没有控制功能,输出该字符不会有任何效果)唯一的作用就是作为字符串结束标志
重点!!!
由双引号(" ")包围的字符串会自动在末尾添加'\0'
char str[] = "C program";
逐个字符地给数组赋值并不会自动添加'\0'
char str[] = {'l', 'o', 'v', 'e'};
论字符数组添加字符'\0' 的重要性!!!
#include <stdio.h>
int main(){
for(int i = 0,c = 65; c < 70; i++,c++){
str[i] = c;
}
printf("%s\n", str);
return 0;
}
很多编译器并不会把局部数组的内存都初始化为 0值,也就是说输出字符数组时,往往很难找到字符串的结束标志,也就导致输出乱码
字符串长度
字符串长度,就是字符串包含了多少个字符(不包括最后的结束符'\0' )
#include <stdio.h>
#include <string.h>
int main(){
char str[5] = "love";
printf("%d\n", strlen(str));
return 0;
}
|