字符串常量

字符串常量

字符常量 : 由一对单引号括起来的单个字符,如'a', 'B'

字符串常量: 由一对双引号括起来的多个字符的序列,如"a",“I Love u”

 

字符串在本质上是多个字符组成的字符数组,C语言规定,在每个字符串常量的结尾,系统会自动加一个字符 '\0' ,作为该字符串的结束标识符,根据是否是 '\0' 判断字符串是否结束。

PS: '\0' 是系统自动加上的,不是人为添加的

比如字符串“a”,看起来它只有1个字符,但是结尾有 '\0' ,所以这个字符串在内存中占2个字节。

int main(void)
{
  printf("%d \x20", sizeof(" ")); //空格占1个字符,所以字符串所占长度为2
  printf("%d \x20", sizeof("a")); //a占1个字符,所以字符串所占长度为2
  printf("%d \x20", sizeof("你好")); //每个中文占2个字符,所以字符串所占长度为5
  return 0;
}

PS: 操作符sizeof是取得字符串所占内存空间的总长度,strlen是取得字符串的有效长度

 

在C语言中,字符串怎么存储

1 通过字符数组存储

 ①字符数组的定义:

  char name[7];

 ②字符数组的初始化:

  定义时初始化:char a[] = “Richard'; //推荐这种写法,系统会自动加一个字符 '\0' ,作为该字符串的结束标识符。

  定义后初始化:

  int main(void)

  {
    char a[8]; //先定义数组的话,数组a的大小必须先给出

    a[0] = 'R'; a[1] = 'i'; a[2] = 'c'; a[3] = 'h'; a[4] = 'a'; a[5] = 'r'; a[6] = 'd';

    printf("a = %s\n", a);  

    system("pause");

    return 0;

  }

  运行结果如图:

   //系统只要没遇到 '\0',就认为该字符串没有结束,直到遇到 '\0'为止。

PS: 前面提到系统会在字符串的最后自动添加结束标识符 '\0' ,但是这样给字符数组一个个赋值时,系统不会自动添加 '\0',必须手动添加。  

2 通过字符指针存储

  char *p = "Hello World";

 

posted on 2019-01-14 13:56  锋邢天下  阅读(2596)  评论(0编辑  收藏  举报

导航