C语言字符数组与字符串
C语言中将字符串当做字符数组处理。
(一)字符串的定义与初始化
char c1[] = { "hello" };
char c2[] = "hello";//{}括号可以省略
(二)字符数组的定义初始化
char c3[] = { 'h','e','l','l','o' };
(三)二者的关系
字符串一定是字符数组,字符数组不一定是字符串。
怎么理解这句话呢?
我们来看下面这段代码……sizeof()用来求数组长度的
int main(void)
{
char c1[] = { "hello" };
char c2[] = "hello";//字符串
char c3[] = { 'h','e','l','l','o' };//字符数组
int d1 = sizeof(c1);
int d2 = sizeof(c2);
int d3 = sizeof(c3);
printf("%d\n",d1);
printf("%d\n",d2);
printf("%d\n",d3);
system("pause");
return 0;
}
结果为
我们发现字符串长度比字符数组的多1
实际上第一句代码char c1[] = { "hello" }
等于char c1[] ={ 'h','e','l','l','o',
’\0’}
它与字符数组的定义char c3[] = { 'h','e','l','l','o' };
只是多了一个’\0’
而’\0’为字符串结束标志符。
字符串定义时系统默认有一个结束标识符,即’\0’