C语言 --- 字符串和字符数组

简介: C语言 --- 字符串和字符数组

1. 字符串和字符数组的区别:

  • C语言中没有字符串这种数据类型,可以通过char的数组来代替
  • 字符串一定是一个char的数组,但char的数组未必是字符串
  • 数字0(和字符’\0’等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char数组。

2. 数字0,C语言字符串结束标志’\0’,空格的关系

来段测试代码看下:

#include <iostream>
#include <string.h>
int main(void)
{
        char str[] = "abcde fghij \0kl";
        printf("the length of str is %ld\n", strlen(str));
        printf("the length of str is %ld\n", sizeof(str));
        printf("空格的ASCII = %d, \'\\0\'的ASCII = %d\n", str[5], str[12]);
        printf("%s", str);
        return 0;
}

输出:

数字0与’\0’的ASCII值一样,也就是数字0与’\0’一样,跟空格没任何关系

3. 关于’\0’的一些特殊点

  • strlen在计算字符串的长度时,遇到’\0’就结束
  • 字符串与字符数组的差别就在于,字符串结尾是’\0’,字符数组没有’\0’
  • %s会接收字符串结束标志’\0’之前的所有字符,‘、0’之后的就不再接受
  • char str[] = “hello”; //strlen(str) = 6,字符串常量会在结尾自动加’\0’
    char str[] = {‘h’, ‘e’, ‘l’, ‘l’, ‘0’};; //strlen(str) = 5
  • strcpy是依据’\0’作为判断结束的
目录
相关文章
|
6天前
|
C语言
C语言学习笔记之初识字符串
C语言学习笔记之初识字符串
19 5
|
3天前
|
存储 编译器 C语言
C语言数组详解
C语言数组详解
11 1
|
5天前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
4天前
|
C语言
C语言刷题(数组)
C语言刷题(数组)
|
4天前
|
编译器 C语言
指针进阶(数组指针 )(C语言)
指针进阶(数组指针 )(C语言)
|
5天前
|
C语言
【C语言刷题每日一题】一维数组的交换
【C语言刷题每日一题】一维数组的交换
|
5天前
|
存储 C语言
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
|
5天前
|
C语言
c语言左旋字符串问题(不同方法超详细解答)
c语言左旋字符串问题(不同方法超详细解答)
7 1
|
6天前
|
C语言
【C语言】:字符分类与转换函数
【C语言】:字符分类与转换函数
8 1
|
3天前
|
存储 C语言
C语言中的多级指针、指针数组与数组指针
C语言中的多级指针、指针数组与数组指针
6 0