C语言中的字符串

字符串的概念

  • 字符串是有序字符的集合
  • 字符串是程序中的基本元素之一
  • C语言中没有字符串的概念
    • C语言中通过特殊的字符数组模拟字符串
    • C语言中的字符串是以'\0'结尾的字符数组

字符数组和字符串

在C语言中,双引号引用的单个或者多个字符是一种特殊的字面量

  • 存储于程序的全局只读存储区
  • 本质为字符数组,编译器自动在结尾加上'\0'字符

鲜为人知的小秘密

  • 字符串字面量的本质是一个数组
  • 字符串字面量可以看做常量指针
  • 字符串字面量中的字符不可改变
  • 字符串字面量至少包含一个字符

字符串字面量

"Hello World"是一个无名的字符数组,下面的表达式正确吗?

char b = "abc"[0];
char c = *("123"+1);
char t = *"";

字符串的长度

  • 字符串的长度就是字符串所包含字符的个数
  • 字符串长度指的是第一个'\0'字符前出现的字符个数
  • 通过'\0'结束符来确定字符串的长度
  • 函数strlen用于返回字符串的长度

例子1:字符串的使用

#include<stdio.h>
#include<string.h>

int main()
{
    char s[] = "hello\0world";
    int i = 0;
    for(i=0;i<sizeof(s)/sizeof(char);i++)
        printf("%c\n",s[i]);
    printf("%s\n",s);

    printf("%d\n",strlen(s));
    printf("%d\n",strlen("123"));
    return 0;
}


小结

  • C语言中通过字符数组模拟字符串
  • C语言中的字符串使用'\0'作为结束符
  • 字符串字面量的本质为字符数组
  • 字符串相关函数都依赖于结束符'\0'
posted @ 2018-06-22 14:16  烟云123  阅读(166)  评论(0编辑  收藏  举报