一、数组(一维数组)
什么是数组?
数组是一组有序的、类型相同的数据的集合
数组的作用?
处理一些类型相同的数据集合
数组的构成:
元素、下标或索引、数组名
定义:
使用前必须定义
1、存储类型
2、数据类型
3、数组名
4、数组大小
语法:
数据类型 数组名[数组长度] ;
例子:int stuIds[22];
备注:
1、数组名后接一个或多个括在方括号内的表达式,用以指定数组的维数
2、数组长度只能是常量和常量表达式(大于0)
定义数组的特性
所有数组元素具有相同的类型
允许使用变量的地方都可以使用数组元素
取值:也可以使用整型表达式引用数组的元素
数组名[整型表达式]
数组里面的每个元素所占字节数和数组类型一致
初始化:
什么是数组初始化:
数组初始化是在数组定义时给元素赋初值
extern和static数组元素自动初始化为 0 -> extern int a[10];或 static int a[10]; ->代表所有元素值都为0
语法:数据类型 数组名[常量表达式]={值,值…};
例如:int ary[10]={0,1,2,3,4,5,6,7,8,9};
规定:
元素之间用逗号隔开
可以只给部分元素赋值,剩余元素赋0值
给全部元素赋值时,可以不说明元素的个数。例如:int ary[]={0,1,2,3,4,5,6,7,8,9};
二、二维数组
定义(声明):
数据类型 数组名[常量表达式1][常量表达式2];
例如:int temp[4][3];
初始化:
inta[3][4]=
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11,12}
};
inta[3][4]={
1, 2, 3, 4,
5, 6, 7, 8,
9, 10, 11, 12};
inta[3][4]={
1, 2, 3, 4,
5, 6, 7, 8,
9,10 , 0, 0};
语法:
数组名[行下标][列下标]
三、字符数组
字符串常量
printf("Hello World!!!");
其中Hello World!!!就是字符串数组
区别->字符常量
例如:'a'
备注:
1、符号不同,字符常量用单引号,字符串常量用双引号
2、长度不同,字符常量有且只有一个字节,字符串常量可多个字节
3、字符串常量一'\0'结尾,例如:"Hello World!!!"之后隐藏了一个'\0'
(ps:'\0'称作结束标志)
字符数组 == 字符串变量
注意:
不能对数组做整体化赋值,只能在初始化的时候进行。
==的意义是:判断两个数组的地址值是否相等
strcmp的意义是:判断两个字符数组的值是否相等
例外:字符串可以通过系统函数进行整体操作
四、字符串的整体I/O操作
字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。
头文件 string.h
gets(ps:scanf)
功能:通过标准输入所获得的字符串
函数说明:char *gets(char *buffer);
其中,返回值:成功时返回输出缓冲区首地址,否则返回NULL
puts(ps:printf)
功能:用于在标准输出设备上显示字符串
函数说明:int puts(const char *string);
sprintf
功能:将其他数据类型转换成字符串类型并输出到指定字符串中.
函数说明:int sprintf( char *buffer, const char*format [, argument] ... );
注意:
以上几种字符串处理函数,应当再次强调:库函数并非C语言本身的组成部分,而是C编译系统为方便用户使用而提供的公共函数。不同的编译系统提供的函数数量和函数名、函数功能都不尽相同,使用时要小心,必要时查一下库函数手册。
字符串拷贝函数strcpy格式:
strcpy (字符数组名1,字符数组名2) 功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“”也一同拷贝。字符数名2,
也可以是一个字符串常量。这时相当于把一个字符串赋予一个字符数组。
字符串比较函数strcmp格式:
strcmp(字符数组名1,字符数组名2) 功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
字符串1=字符串2,返回值 =0;
字符串1〉字符串2,返回值 〉0;
字符串1〈字符串2,返回值〈0。
假设计算机指定数组score中的元素从地址为1000的地方开始存放。那么,存放一个元素,计算机需要给该数组多少空间呢?
由于每个元素的数据类型为int,而一般来说,int占用4个字节,所以计算机需要为每一个元素分配4个字节的存储空间。如下图所示:元素score[0]占用了编号为1000, 1001, 1002, 1003共4个字节的内存空间。score[1]占用1004 - 1007号内存空间。其余元素依此类推。
当声明数组 int score[10]; 时,计算机就为数组预留10×4=40字节的存储空间,正式的说法是分配40字节的存储空间,此时空间里面没有存放东西。对于数组中的各元素,它们的存储空间是连续的,没有间断。因此,如果知道了某个元素的存放地址,就能准确获取其它元素的存放地址。
下图是对数组声明的一些解说: