字符串

字符串是内存中一段连续的char空间,以'\0'结尾:例如"a"表示'a''\0'

注意:'a'表示int类型或char类型;"a"才表示字符串类型

字符串的定义初始化方法有两种

  • 字符char数组
  • 字符char指针
# 字符char数组
# 字符串的长度一定不能超过char数组的长度,因为字符串是以'\0'结尾的,必须保证char数组的最后一个元素的值是'\0'
# 所以在定义char数组时就将其初始化为0
char a[10]={‘h’,’e’,’l’,’l’,’o’};  # 初始化时,元素'o'后面的元素初始化为0即'\0',所以它也是一段连续的char空间,并以'0'结尾
char a[10]="hello";                # 初始化时,a[0]~a[4]分别被初始化'h'/'e'/'l'/'l'/'o',剩余元素初始为0
char a[10]={ 0 };                  # 初始化时,所有元素都初始为0
char a[]="hello";                  # 初始化时,数组a有6个元素a[0]~a[5],分别为'h'/'e'/'l'/'l'/'o'/'\0'

# 字符char指针
char *p = "hello";                 # 定义一个char类型的指针指向字符串

# char指针可以引用char数组
char b[10] = "hello";
char *p = b;

下面有一个demo,实现功能是:去掉给定字符串后面的空格

#include <stdio.h>

int main(){
        char a[] = "hello world a     ";
        int index=sizeof(a)/sizeof(a[0])-2;//数组a的最后一个元素是字符串结尾的‘0’,所以需要从倒数第二个元素开始遍历的
        while(a[index]){
                if(a[index] != ' '){
                        a[index+1] = 0;
                        break;
                }
                index--;
        }
        printf("%s\n",a);
}