1,C语言中字符串是字符数组:

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
或者
char site[] = "RUNOOB";

注意:
\0是null字符,用于终止该字符数组,标记字符串结束。
写入空字符结束并不是必须,因为编译器初始化会自动加入。
数组的末尾存储了空字符,
所以字符数组的大小比单词 RUNOOB 的字符数多一个

实例:

#include <stdio.h>
 
int main ()
{
   char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
 
   printf("菜鸟教程: %s\n", site );
 
   return 0;
}

执行:
菜鸟教程: RUNOOB

可以看成数组名称就是字符串变量。

总结:字符串就是字符数组,但字符数组并不一定是字符串。

1,下面两个并不等价:
char c[] = {'I',' ','l','o','v','e',' ','s','h','i','y','a','n','l','o','u','\0'};
不等于:
char c[] = {'I',' ','l','o','v','e',' ','s','h','i','y','a','n','l','o','u'};
字符串都有一个\0结尾。

但有时候并不需要手动写,编译器自动完成。

下面三种都是等价的:
char[] = {"I love shiyanlou"};
可以直接省去花括号:
char[] = "I love shiyanlou";
此时数组的长度是 17,而不是 16,因为字符串常量的最后系统自动加了一个 '\0'char c[] = {'I',' ','l','o','v','e',' ','s','h','i','y','a','n','l','o','u','\0'};
1,下面两个并不等价:
char c[] = {'I',' ','l','o','v','e',' ','s','h','i','y','a','n','l','o','u','\0'};
不等于:
char c[] = {'I',' ','l','o','v','e',' ','s','h','i','y','a','n','l','o','u'};
字符串都有一个\0结尾。

但有时候并不需要手动写,编译器自动完成。
下面三种都是等价的:
char[] = {"I love shiyanlou"};
可以直接省去花括号:
char[] = "I love shiyanlou";
此时数组的长度是 17,而不是 16,因为字符串常量的最后系统自动加了一个 '\0'char c[] = {'I',' ','l','o','v','e',' ','s','h','i','y','a','n','l','o','u','\0'};
在C语言中,可以用两种方法表示和存放字符串:
(1)用字符数组存放一个字符串
char str[ ]=”I love China”;
(2)用字符指针指向一个字符串
char* str=”I love China”;
对于第二种表示方法,有人认为str是一个字符串变量,以为定义时把字符串常量”I love China”直接赋给该字符串变量,这是不对的。
C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放字符串常量,程序在定义字符串指针变量str时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给str。
指针指向数组首字符地址

相关文章:

  • 2021-04-26
  • 2021-07-22
  • 2022-12-23
  • 2021-11-14
  • 2021-10-16
  • 2021-05-18
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-18
  • 2021-09-18
  • 2021-07-25
  • 2021-12-16
相关资源
相似解决方案