c 数组与字符串

字符数组

字符数组是元素的数据类型为字符类型的数组
	char c[10], ch[3][4];
字符数组的初始化
	逐个字符赋值
	用字符串常量

在这里插入图片描述

例子:
char fruit[][7] = { "Apple" , "Orange" , "Grape" , "Pear" , "Peach" }
fruit[0] -> 'A' 'p' 'p' 'l'  'e' '\0'  '\0'
fruit[0] -> 'O' 'r' 'a' 'n'  'g' 'e'  '\0'
fruit[0] -> 'G' 'r' 'a' 'p'  'e' '\0'  '\0'
fruit[0] -> 'P' 'e' 'a' 'r'  '\0' '\0'  '\0'
fruit[0] -> 'P' 'e' 'a' 'c'  'h' '\0'  '\0'
  • C语言中无字符串变量,用字符数组处理字符串 字符串结束标志:‘\0’

字符串函数

C库中实现了很多字符串处理函数
 	#include <string.h>
几个常见的字符串处理函数
	求字符串长度的函数strlen
	字符串拷贝函数strcpy
	字符串连接函数strcat
	字符串比较函数strcmp
字符串长度函数strlen
	格式:strlen(字符数组)
	功能:计算字符串长度
	返值:返回字符串实际长度,不包括‘\0’在内
	\xhh表示十六进制数代表的符号
	\ddd表示8进制的
	例:对于以下字符串,strlen(s)的值为:
		char  s[10]={A,‘\0,B,C,‘\0,D};
		char  s[ ]=“\t\v\\\0will\n”;
		char  s[ ]=“\x69\141\n”; 
		答案:1   3   3
		
字符串拷贝函数strcpy
格式:strcpy(字符数组1,字符串2)
	功能:将字符串2,拷贝到字符数组1中去
	返值:返回字符数组1的首地址
说明:
	字符数组1必须足够大
	拷贝时‘\0’一同拷贝

字符串连接函数strcat
格式:strcat(字符数组1,字符数组2)
	功能:把字符数组2连到字符数组1后面
	返值:返回字符数组1的首地址
	说明:
	    字符数组1必须足够大
	    连接前,两串均以‘\0’结束;连接后,1的‘\0’取消,新串最后加‘\0’

举例:
#include <string.h>
#include <stdio.h>
int main()
{  
	char destination[25];
	char blank[] = " ", c[]= "C++",
	          turbo[] = "Turbo";
	strcpy(destination, turbo);
	strcat(destination, blank);
	strcat(destination, c);
	printf("%s\n", destination);
	
	return 0;
}
字符串比较函数strcmp
	格式:strcmp(字符串1,字符串2)
	功能:比较两个字符串
	比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止                                          
	返值:返回int型整数
		a. 若字符串1< 字符串2, 返回负整数
		b. 若字符串1> 字符串2, 返回正整数
		c. 若字符串1== 字符串2, 返回零
strncpy(p, p1, n) 复制指定长度字符串 
strncat(p, p1, n) 附加指定长度字符串 
strcasecmp() 忽略大小写比较字符串
strncmp(p, p1, n) 比较指定长度字符串 
strchr(p, c) 在字符串中查找指定字符 
strstr(p, p1) 查找字符串 
isalpha() 检查是否为字母字符 
isupper() 检查是否为大写字母字符 
islower() 检查是否为小写字母字符 
isdigit() 检查是否为数字 

数组

数组
	构造数据类型之一
	数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素
	数组中各元素的数据类型要求相同,用数组名和下标确定。数组可以是一维的,也可以是多维的。

一维数组的定义
	所谓一维数组是指只有一个下标的数组。它在计算机的内存中是连续存储的。
	C语言中,一维数组的说明一般形式如下:
	<存储类型>  <数据类型 >  <数组名>[<表达式>] ;

注意事项
	C语言对数组不作越界检查,使用时要注意
	int a[5]; a[5] = 10
	关于用变量定义数组维数
	int i = 15; int a[i]

一维数组的引用

数组必须先定义,后使用
只能逐个引用数组元素,不能一次引用整个数组
数组元素表示形式:数组名[下标]
	其中:下标可以是常量或整型表达式

在这里插入图片描述

一维数组的初始化

初始化方式:在定义数组时,为数组元素赋初值
	int a[5]={1,2,3,4,5};
说明
	数组不初始化,其元素值为随机数
	对static数组元素不赋初值,系统会自动赋以0值
	只给部分数组元素赋初值 
	
static int a[5];
等价于:a[0]=0;  a[1]=0; a[2]=0; a[3]=0; a[4]=0;

int a[5]={6,2,3};
等价于:a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0;
int a[3]={6,2,3,5,1};     (×)
int a[]={1,2,3,4,5,6};//编译系统根据初值个数确定数组维数

二维数组

二维数组的定义
定义方式:(声明时列数不能省略,行数可以)
   数据类型 数组名[常量表达式][常量表达式];

例int a[3][4];  
     float b[2][5];
     int c[2][3][4];

数组元素的存放顺序
原因:内存是一维的
二维数组:按行序优先

例子:
int a[3][4]

内存存放顺序
a[0][0]
a[0][1]
a[0][2]
a[0][3]
a[1][0]
a[1][1]
a[1][2]
a[1][3]
a[2][0]
a[2][1]
a[2][2]
a[2][3]
a[3][0]
a[3][1]
a[3][2]
a[3][3]

二维数组元素的引用

形式:数组名[下标][下标]
二维数组元素的初始化
	分行初始化
	按元素排列顺序初始化

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值