一位字符型数组:
定义:数组类型 数组名[数组长度]。
char s[10];
从字符数组角度看,字符存放方式为:s[10]= {'a','b','c'};
从字符串角度看:s[10] = {'hello"};大括号可要可不要;
字符串数组的特点:
1.字符串是当作字符数组来处理的。
2.字符串有一个专门的结束标志'\0'。
3.处理的是字符串,操作的时候往往以结束的标志作为操作依据。
4.处理的是数组,操作的时候往往以数组长度作为操作依据。
5.字符数组可以用来存储字符串。
字符串在内存中的存储方式为字符数组形式:
如:"hello"={'h','e','l','l','o','\0'};
而a[10] = {'h','e','l','l','o'};也相当于字符串,因为系统会自动补充符号'0,即相当于\0'。
而a[5]= {'h','e','l','l','o'};是字符数组,而不是字符串,因为没有额外的内存空间给系统补充'\0'。
而""也是字符串,是空字符串。
字符串相关函数:
puts
puts函数的声明:int puts(const char *str)
功能:输出一个字符串
参数:s:表示字符串,可以传入字符数组名,也可传入字符串常量。
且它输出字符串后会自动换行。
返回值:成功返回一个非负数,失败返回EOF;
gets
功能:从键盘获取一个字符串。
gets函数的声明:char* gets(char *str)
参数:s:代表需要一个存储空间,可以传入一个一维字符数组名。
返回值:成功返回数组名,失败返回NULL。
字符串函数
使用前应加头文件<string.h>
strlen
strlen函数声明:size_t strlen(const char *s)
计算字符串长度函数
功能:计算字符串长度
参数s:表示需要一个指针:可以传入数组名,也可传入字符串常量。
返回值:返回字符串长度。
strcpy
strcpy函数声明:char *strcpy(char *dest,const char *src)
字符串复制函数
功能:复制字符串,将src中的字符串复制到dest中
参数:src:表示原字符串,可以给到实参形式有:1.一维数组名 2.字符串常量
strcpy(s1,s2);
strcpy(s1,"hello");
下面代码相当于strcpy的功能
#include <stdio.h>
int main()
{
char s1[10] = {0};
char s2[10] = {0};
gets(s1);
int i = 0;
while(s1[i] != '\0')
{
s2[i] = s1[i];
}
puts(s1);
puts(s2);
return 0;
}
dest:表示目的字符串;可以给到的实参形式为:一位字符数组名。
此代码等同于strcmp实现的功能
strcmp
strcmp函数声明:int strcmp(const char *s1,const char *s2)
字符串比较函数:
功能:比较两个字符串的大小。
传入参数:两个都可以是一维数组名或字符串常量
strcmp(s1,s2)
下面代码相当于strcmp的功能
1 #include<stdio.h>
2
3 int main()
4 {
5 char s1[100] = {0};
6 char s2[100] = {0};
7 int i = 0;
8 int j = 0;
9
10 gets(s1);
11 gets(s2);
12 while(s1[i] == s2[j]&&s1[i]!='\0'&&s2[j]!='\0')
13 {
14 i++;
15 j++;
16 }
17 if(s1[i]>s2[j])
18 {
19 printf("s1>s2\n");
20 }
21 else if(s1[i]<s2[j])
22 {
23 printf("s2>s1\n");
24 }
25 else
26 {
27 printf("s1=s2");
28 }
29
30 return 0;
31 }
strcat
strcat函数声明:char *strcat(char *dest,const char *src)
功能:拼接字符串
参数:dest //目的字符串,可以传入一维数组名;
src //源字符串,可以传入的参数有:一维数组名或者字符串常量;
strcat(s1,s2);
strcat(s1,"hello");
strcat("hello","world");
下面代码相当于strcat函数的功能:
1 #include<stdio.h>
2
3 int main()
4 {
5 char s1[50];
6 char s2[50];
7 int i = 0;
8 int j = 0;
9 gets(s1);
10 gets(s2);
11
12 while(s1[i] != '\0')
13 {
14 i++;
15 }
16
17 while(s2[j]!='\0')
18 {
19 s1[i] = s2[j];
20 i++;
21 j++;
22 }
23 s1[i]='\0';
24
25 puts(s1);
26 puts(s2);
27 return 0;
28 }
二维数组:
定义:①类型说明符 ②数组名 ③[常量表达式]④[常量表达式]
①类型说明符:用来说明数组中存储的数据的类型
②数组名:与标识符命名规则一样。
③常量表达式:说明有几行
④常量表达式:说明有几列
数组初始化:
全部初始化:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
部分初始化:(没有初始化的地方自动初始化为0)
int a[3][4]={1,2,3,4,5,6,7,8};
int a[3][4]={{1,2},{5,6,7},{9}};
n维数组的本质是n-1维数据类型的一维数组