C语言第七回合:数组
【学习目标】
1. 认识数组
2. 数组的定义和初始化
3. 一维数组
4. 二维数组
数组:由一系列类型相同的元素构成的。
数组可分为一位数组、二维数组和多维数组(多维数组使用的比较少,这里不讲)
注意: 使用数组前必须先进行定义,下标总是以0开始的。
A:一维数组
(a) 定义:
类型说明符 数组名[常量表达式];
如:int array[ size ]; //分配空间是array[0]…a[size-1]
下界= 0; //从array[0]
上界= size- 1; 最后一个array[ size- 1 ]
长度= size或上界+ 1;
PS: (1)类型说明符是任何一种基本的数据类型或构造数据类型
(2)数组名是用户定义的合法的标识符
(3)方括号中的常量表达式表示元素的个数,即数组的长度。
(4)数组的下标是从0开始计算的,不能越界!!
如:
#include <stdio.h>
int main( void )
{
//数组的定义
float score[ 3 ]; // 3个浮点型数组
char name[15 ]; // 15个字符数组
int number[ 60 ]; // 60个整型数组
return 0;
}
(b) 初始化
类型说明符 数组名[常量表达式]= {值, 值, 值……};
(1) 可以给部分的元素赋初始值
如;
int a[10]= {0, 1, 2, 3};
表示只给a[0]- a[4]都分别赋值了,而后面的自动初始为0;
(2) 可以给元素逐个赋值
如:
int a[3]= {`1, 2, 3 };
//或像下面赋值
a[ 0 ]= 0;
a[ 1 ]= 1;
a[ 2 ]= 2;
a[ 3 ]= 3; //错!!越界了!!!
(3) 给全部的元素赋值,可以隐藏数组的个数
如:
int a[]= {3, 2, 4, 6};
//等价于:
int a[4]= {3, 2, 4, 6};
注意:数组定义完后,不能越界,不能改变已经分配的空间大小!
//一数组初始化实例
#include <stdio.h>
int main( void )
{
//浮点型数组score
//分别定义score[ 0]= 60.9, score[ 1 ]= 99.0, score[ 2 ]= 82.0
float score[ 3 ]= { 60.9, 99.0, 82.0 };
//int型数组:只初始化前一部分的数据,后一部分默认初始化为0
intnumber[ 6 ]= { 1, 2, 3, 4 };
//等同于 number[ 6]= { 1, 2, 3, 4, 0, 0 };
//char类型字符数组name
charname[ ]= { 'A' };
//分别是:name[ 0]= 'A'
//与上面一条语句类似,但不同!!!! 下面是个字符串
charmyname[ ]= { "A" }; // 等同于char myname[ ]= "A"
//分别是myname[0]= 'A', myname[ 1 ]= '\0'
return0;
}
B: 二维数组
(1) 定义:
类型说明符 数组名 [常量表达式1][常量表达式2];
常量表达式1表示第一维的长度,常量表达式2表式第二维的长度
如:int[3][4];
表示一个三行四列的数组
实际的数组布局如下
(2) 初始化
和一维数组一样,只不过是定义的元素个数等于:表达式1×表达式2
//二数组初始化实例
#include <stdio.h>
int main( void )
{
//int 型数组的定义
int array[ 2 ][ 2 ]= { 1, 2, 3, 4 };
/*上面等同于
array[ 0 ][ 0 ]= 1 ;
array[ 0 ][ 1 ]= 2 ;
array[ 1 ][ 0 ]= 3 ;
array[ 1 ][ 1 ]= 4 ;
*/
//字符数组的分配
//定义字符串数组
charstr[ 2 ][ 10 ]= {
"abc",
"defgh"
};
//定义两个字符串,每个字符串最大可包含10个字符(包含'\0')
/*等同于把
str[0 ][ 10 ]= "abc"; //字符串不能直接赋值给字符串数组,需通过函数!!
str[1 ][ 10 ]= "defgh"; //除了定义时并初始化
*/
return 0;
}
【指尖的微笑】错误在所难免,希望得到大家的指正^-^
转载时保留原文的链接http://oursharingclub.joinbbs.net和http://blog.csdn.net/mirrorsbeyourself