字符数组和字符串
以32位系统为例。
1、定义和初始化
字符数组:char c[10];
字符串:char s[] = "hello";
字符数组的定义和初始化可以在一起或者分开:
char c[10] = "qwer"; 或者
char c[10];
c[0] = 'q'; c[1] = 'w';c[2] = 'e'; c[3] = 'r';
不能这样:c = "qwer"
初始化时要注意数组大小,同时要保留\0的位置。
用printf打印字符数组时,数组中必须要有\0,否则会造成打印越界。
字符串的定义和初始化不能分开,但可以修改指定字符,如
char s[] = "hello"; s[1] = 'o';
2、sizeof和strlen
sizeof(c)=10;就是实际的数组大小
sizeof(s)=6;大小是字符的个数+1(1是隐藏'\0')
strlen不包含\0,如:
char c[10] = "wwer"; strlen(c) = 4;
char s[] = "helloz"; strlen(s) = 6;
3、引用
两者的引用方式相同,有两种:通过下标或者指针的方式,如:
字符数组:c[1] = 'r' 或者 *(c + 1) = 'r'
字符串:s[1] = 'r' 或者 *(s + 1) = 'r'
4、字符串相关操作函数
主要有以下这些,基本都定义在string.h里面。linux系统下面可以用man命令查看每个函数的用法。如:
xxx@ubuntu:~/work/code/ctest$ man str
strace strchr strcpy strerror strftime strlen strncpy strpbrk strsignal strtof strtol strtoul strverscmp
strcasecmp strchrnul strcspn strerror_r string strncasecmp strndup strptime strspn strtoimax strtold strtoull strxfrm
strcasestr strcmp strdup strfmon strings strncat strndupa strrchr strstr strtok strtoll strtoumax
strcat strcoll strdupa strfry strip strncmp strnlen strsep strtod strtok_r strtoq strtouq
xxx@ubuntu:~/work/code/ctest$ man strlen //查看strlen的用法