黑马程序员————C语言数组

来源:互联网 发布:魔法王座升阶准确数据 编辑:程序博客网 时间:2024/05/17 15:22

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1,数组简介

    数组就是具有相同类型的若干元素按有序的形式组织起来。数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。数组基本分为数值数组、字符数组、指针数组、结构数组等各种类别。

2,数组的定义

    在C语言中使用数组必须先进行定义。一维数组的定义方式为:类型说明符数组名[常量表达式];类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:

int a[10]; 说明整型数组a,有10个元素。float b[10]; 说明实型数组b,有10个元素。char c[10];说明字符数组c,有10个元素。

注意:
1)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2)数组名的书写规则应符合标识符的书写规定。
3)数组名不能与其它变量名相同。
4)方括号中常量表达式表示数组元素的个数,其下标从0开始计算。
5)不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。

3,数组的简单引用

    数组元素的一般形式为:数组名[下标]。其中下标只能为整型常量或整型表达式。(如为小数时,C 编译将自动取整。)如下:

a[5]a[i+j]a[i++]

数组元素的简单遍历:

#include <stdio.h>int main(){int i,a[5]={1,2,3,4,5};for(i=0; i<5; i++)printf("%d",a[i]);return 0;}

4,一维数组的初始化

    数组初始化赋值是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。给数组赋值的方法除了用赋值语句对数组元素逐个赋值外, 还可采用初始化赋值和动态赋值的方法。

数组初始化赋值的一般形式为:

类型说明符数组名[常量表达式]={值,值……值};
C语言对数组的初始化赋值还有以下几点规定:
1)可以只给部分元素赋初值。

例如

int a[10]={0,1,2,3,4};
int a[10]={[3]=1,[5]=8}

2)只能给元素逐个赋值,不能给数组整体赋值。

例如

int a[10]={1,1,1,1,1,1,1,1,1,1};

不能写成

int a[10]=1;

3)如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。

例如

int a[]={0,1,2,3,4};

5,一维数组举例

#include <stdio.h>int main(){int i,max,a[10];//定义一个数组a、变量i、变量maxprintf("input 10 numbers:\n");//提示输入10个数scanf("%d",&a[i]);//给数组元素赋值max=a[0];for(i=1;i<10;i++)//求数组a中最大的元素if(a[i]>max) max=a[i];printf("maxmum=%d\n",max);}

6,二维数组

    1)二维数组定义的一般形式是:类型说明符数组名[常量表达式1][常量表达式2]。其中常量表达式1 表示第一维下标的长度,常量表达式2 表示第二维下标的长度。例如:

int a[2][3];

展开后如下:

a[0][0],a[0][1],a[0][2]a[1][0],a[1][1],a[1][2]

    2)二维数组的元素也称为双下标变量,其表示的形式为:数组名[下标][下标].其中下标应为整型常量或整型表达式。在上例中a[1][1]表示第一行第一列的元素。
    注意:下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。

    3)二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。例如:

int a[2][3]={{1,2,3},{2,3,4}};

或者

int a[2][3]={1,2,3,2,3,4};

注意:(二维数组和一维数组的初始化相类似)
   (1)可以只对部分元素赋初值,未赋初值的元素自动取0值。例如:

int a[2}][3]={{1},{2}};

展开后如下:

1 0 02 0 0

   (2)如对全部元素赋初值,则第一维的长度可以不给出。
例如:

int a[2][3]={1,2,3,4,5,6,};

也可写为:

int a[][3]={1,2,3,4,5,6,};

   (3)数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。

例如二维数组a[2][3]可分解为两个一维数组:a[0]、a[1]。

7,字符数组和字符串

1)用来存放字符量的数组称为字符数组。

例如:

char c[5]={'a','b','c','d','e'};
2)在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。
例如:

char c[]={"C program"};

也可写为:

char c[]="C program";

用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。上面的数组c 在
内存中的实际存放情况为:

C program\0


8,字符数组简单举例

<span style="font-weight: normal;"><span style="font-size:10px;"><span style="font-weight: normal;">#include <stdio.h>int main(){char st[15];//定义字符数组printf("input string:\n");//提示输入字符串scanf("%s",st);//保存输入结果到字符数组stprintf("%s\n",st);//输出字符st保存的字符串}</span></span></span>





0 0
原创粉丝点击