数组:使用一个名称保存同一类的多个数据;其中一个数据称为数组元素。
一,一维数组
{
1、格式 类型(int char float long short 等) 数组名 [数字、常量表达式];eg int a[10];常量表达式不能是变量,即不能对数组大小进行动态定义
2、引用 数组名【下标】eg a[2] = 5;数组的一个元素相当于一个变量,对数组元素的操作实际上是对一个变量的操作。
3,、数组在内存中的存放,整个数组所占的大小是数组的个数乘以基类型eg int a[10] 大小为sizeof(int)*10;系统会为定义的数组自动分配一段连续的
存储空间,数组的首地址是第0个元素的地址;
}
二维数组
{
一、格式;基类型 数组名【3】【4】(三行四列)可以把二维数组看成特殊的一维数组eg int a[3][4] = { a[0],a[1],a[2] }
二、引用:数组名 【1下标】【2小标】
三:数组在内存中的存放:二维数组在内存中是按照二维数组元素的下标从小到大的顺序来存储的。即首先存储二维数组第一行元素中的所有元素,然后依次存储接下来的元素。
四:赋值 1.分行给二维数组赋初值。
例如: int a[3][4]={{1,2,3,4},{5,6,7,8},
{9,10,11,12}};
2.可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。
例如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
3.可以对部分元素赋初值。
例如: int a[3][4]={{1}, {5}, {9}};也可以对各行中的某一元素赋初值,如int a[3][4]={{1}, {0,6}, {0, 0, 0, 11}};
4.如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
例如:
int a[3][4]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};等价于:
int a[ ][4]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
}
三、字符数组
{
1:定义char 数组名【个数】
2:初始化 例如:char c[10];
c[0]=′I′ ; c[1]=′ ′; c[2[=′a′; c[3]=′m′;
c[4]=′ ′; c[5]=′h′; c[6]=′a′; c[7]=′p′;
c[8]=′p′; c[9]=′y′;
char c[10]={‘I’, ‘’,‘a’,‘m’,‘’,‘h’,‘a’,‘p’, ‘p’,‘y’}
C语言规定字符串结束的标志位‘\0’;
4、字符数组的输入输出
逐个字符输入输出。用格式符“%c”输入或输出一个字符。char ch = 'p'; printf("%c\n",&ch);
将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串的输入输出。 char ch[ ] = "abc";printf("%s\n",ch);
5、如果数组长度大于字符串实际长度,也只输出到遇′\0′结束。输出字符不包括结束符′\0′。如果一个字符数组中包含
一个以上′\0′,则遇第一个′\0′时输出就结束。
6、如果利用一个scanf函数输入多个字符串,则在输入时以空格分隔。
例如:scanf(″%s %s %s″,str1,str2,str3);
输入数据:How are you?
}
四、字符串处理函数
{
1、puts(字符数组名 )函数;
作用:将一串字符串遇到\0为止输出到终端上并加上换行符;用puts函数输出的字符串中可以包含转义字符。
例如:
char str[ ]={″China\nBeijing″};
puts(str);
输出结果:
China
Beijing
2、gets(字符数组名)函数
作用:从终端输入一串字符串到字符数组
与scanf()的区别:gets遇到回车结束,scanf遇到回车与空格结束;若输入的字符中含有空格则用gets;
注意:gets()未指定缓存区大小,有警告;
以下字符串处理函数需要加上头文件#include <string.h>
3strlen(字符数组名)函数:用来测量字符数组的实际长度(遇到\0结束的长度)sizeof()是数组的大小;sizeof()包括
\0;
4、strcat(字符数组1,字符数组2);
作用:将字符数组2的内容加到字符数组1后面;结果放在字符数组1里面;
注意:sizeof(字符数组1) >= strlen(字符数组1) + strlen( 字符数组2 )
5、strcpy(字符数组1,字符串)
作用:将字符串复制到字符数组1中;
strcnpy(字符数组1,字符数组2,2):将字符数组2的前两个字符与\0放到字符数组1中;
6、strcmp(字符串1,字符串2):比较两个字符串;
eg:strcmp( str1 , str2 )
若str1 = str2 ;函数返回0;
若str1 > str2;函数返回1;
若str1 < str2;函数返回-1;
注意:对两个字符串比较,不能用以下形式:
if(str1>str2)
printf(″yes″);
而只能用
if(strcmp(str1,str2)>0)
printf(″yes″);
strcnmp( 字符串1 , 字符串2 ,n)比较前n个字符;
}