目录
1数值数组
常考一维数组、二维数组
表达形式的不同:一维数组就是包含一对中括号,二维数组包含两对中括号
2字符数组
字符数组有字符串和字符串数组。
补充知识点:
用双引号引起来的就是字符串,字符串由字符组成
字符串使用%s格式化输出
字符串以\0结尾,没有\0就不是字符串
只要是用双引号括起来的都是字符串
字符串的本质就是数组
注意: 字符串变量和普通的字符数组有一定的区别,C语言规定,字符串必须以\0结尾(作为字符串的结束符号),所以字符串变量的元素个数比字符数组的元素多一个\0
2.1字符串存储形式
在C语言中,字符串有两种存储方式,一种是通过字符数组存储,另一种是通过字符指针存储。
char c[10]="abcd"; const char *c="adfdf"//将c声明为一个指向不变字符串的指针;如果不用const则会报错
2.2字符串表示形式
有两种表现形式:字符数组、字符指针
char *p = "linux" ;
char a[] = "linux";
两种表现形式的区别:字符数组本身是数组,数组自身自带内存空间,可以用来存储东西;而字符指针是指针,本身永远只占4字节,而且这4字节还不能用来存储有效数据,所以只能把有效数据存放到其他的地方,然后把首地址存放在p中。
2.3字符串处理函数
字符串的处理函数大致可以分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类,字符串函数也是他的一个形式。
1:输出函数
int puts(char const*strPtr);
输出字符串到显示器中去,传入的实参可以是字符串数组也也可以是字符指针
一般情况下我们用fputs来代替
2:字符串的输入函数
char *gets(char *strptr);
char *fgets();
从标准键盘输入一个字符串存放到指针strptr指向的字符数组,一般我们使用fgets来操作
3:获取字符串的长度
int strlen(char const*string);
获取字符串的长度,返回的是字符的个数,但是不会包括’\0’,结束符
4:字符串拷贝函数
char *strcpy(char*des,char*src);
char *strncpy(char *des,char *src,int size);
将src指向的字符串拷贝到des指向的字符串数组中去,结束符也一同进行拷贝,size参数也可以拷贝制定长度的字符串,建议des为字符数组
注意:目标尽量使用字符数组,因为如果是字符指针的话,分配的内存在常量池中,是不允许进行改变的,容易造成段错误
5:字符串的连接函数
char * strcat(const *char str1,const *char str2);
char *strncat(const *char str1,const *char str2,int size);
将str2指向的字符串连接到str1指向的字符后面,同时会删除str1后面的’\0’,返回的是str1指向字符串的首地址重点内容
6:字符串比较函数
int strcmp(const char * str1,const char *str2);
int strncmp(const char*str1,const char *str2,int size);
按照ascii码来进行比较,并由函数返回值进行判断
返回0,字符串1等于字符串2,
大于0,字符串1大于字符串2,
小于0,字符串1小于字符串2,
7:字符串分割函数
char* strtok(char *str,const char *delimiters);
根据delimiters指向的分割符号,将str指向的字符串分割成若干个子字符串,同时返回的是分割出的子字符串
8:字符串中是否包含字符
char * strchr(const char *,int c);//从做往右寻找字符c
char * strrchr(const char *,int c); //从有往左开始寻找字符c
判断字符串中是否包含字符串;
9:内存的初始化
memset(void *s,int c,size_t n);
10:内存的拷贝
memcpy(void *des,void *src ,size_t ,n);
2.4字符串数组的特点
无法将字符串赋值给字符数组