美文网首页
C语言- 字符、字符数组

C语言- 字符、字符数组

作者: 我阿郑 | 来源:发表于2021-12-10 18:57 被阅读0次

字符数组和字符串

C语言中没有字符串这种数据类型,C语言中通过char型数组来替代字符串的功能。
C语言中的字符串一定是一个char的数组,但是注意 char的数组未必是字符串

  • 数字0 (和字符'0' 等价)结尾的char数组就是一个字符串
  • 如果char数组没有以0结尾,那么就不是一个字符串,只是一个普通的字符数组
  • 字符串可以理解成是一个特殊的char数组
int main(int argc, const char * argv[]) {

    // 字符
    char ch = 'w';
    // 字符数组
    char arr[5] = {'h','e','l','l','o'};
    // 字符串
    // 字符串结束的标志必须是\0 (数字0 等同于\0,但不等同于字符'0')
    char str[] = {'h','e','l','l','o','\0'};
    // char str[] = {'h','e','l','l','o','0'}; 和上面等价
    
    // 字符串 “hello” 会以 \0 作为结束标志位
    char *str1 = "hello";
    // char str[] = "hello" 等同于 char str[] = {'h','e','l','l','o','\0'};
    char str2[] = "hello";
    
    // 如果一串字符没有以0结束,则printf会一直尝试打印下去...
    printf("%s",str); 
    
    // 遍历
    for (int i = 0; i < sizeof(arr); i++) {
        printf("%c",arr[i]); // 打印 hello
    }
    
    for (int i = 0; i < sizeof(str); i++) {
        printf("%c",str[i]); // 打印 hello
    }
    
    for (int i = 0; i < sizeof(str2); i++) {
        printf("%c",str2[i]); // 打印 hello
    }
 
    return 0;
}   

字符串的长度

从头开始,一直到结束符0,中间的字符个数就是字符串的长度

注意事项

int main() {
    int i;
    char str1[30] = "http://c.biancheng.net";
    char str2[] = "C Language";
    char str3[30] = "You are a good\0 boy!";
    printf("str1: %s\n", str1);
    printf("str2: %s\n", str2);
    printf("str3: %s\n", str3);
    return 0;
}

// 打印结果
str1: http://c.biancheng.net
str2: C Language
str3: You are a good

str1 和 str2 很好理解,编译器会在字符串最后自动添加 ‘\0’,并且数组足够大,所以会输出整个字符串。对于 str3,由于字符串中间存在 ‘\0’,printf() 扫描到这里就认为字符串结束了,所以不会输出后面的内容。

(1) 数组要足够大: length + 1
(2) 不以0结束的字符串,不是正常的字符串
(3) 0之后的字符不会被打印出来

相关文章

  • C语言- 字符、字符数组

    字符数组和字符串 C语言中没有字符串这种数据类型,C语言中通过char型数组来替代字符串的功能。C语言中的字符串一...

  • 2018-05-13

    C语言:c语言中没有字符串类型,也没有字符串变量,字符串是放在字符型数组中的。 C语言数变量类型:整型、浮点型、v...

  • Redis底层数据结构SDS

    前言 Redis是C语言开发的,C语言的字符类型是char,字符数组是char[],Redis没有直接使用C语言的...

  • C-字符串

    字符串 在 C 语言中,字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。C 编译器会在初始化数组...

  • redis字符串对象

    C语言中的字符串 在C语言里面使用长度为N+1的字符数组来表示长度为N的字符串,并且字符数组的最后一个元素总是空字...

  • C语言基础教程之字符串

    C语言字符串 C 语言中,字符串实际上是使用null字符 '' 终止的一维字符数组。因此,一个以 null 结尾的...

  • redis源码2--字符串SDS

    Redis是用C语言实现的,但是并没有使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串...

  • C入门7:字符串入门

    1. 字符串是什么? 存放字符(char)的数组称为字符数组。在C语言中,使用NULL字符('\0')终止的一维字...

  • Redis数据结构之简单动态字符串

    一、简单动态字符串 Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符...

  • redis sds

    简单动态字符串 Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串)...

网友评论

      本文标题:C语言- 字符、字符数组

      本文链接:https://www.haomeiwen.com/subject/gmcqfrtx.html