龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C语言程序设计基础讲座之数组(1)(2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
是合法的。但是下述说明方式是错误的。 void main() { int n=5; int a[n]; …… } 6.允许在同一个类型说明中,说明多个数组和多个变量。 例如: int a,b,c,d,k1[10]

  是合法的。但是下述说明方式是错误的。

void main()

{

    int n=5;

    int a[n];

     ……

}

  6.允许在同一个类型说明中,说明多个数组和多个变量。

  例如: int a,b,c,d,k1[10],k2[20];

  数组元素的表示方法

  数组元素是组成数组的基本单元。数组元素也是一种变量, 其标识方法为数组名后跟一个下标。 下标表示了元素在数组中的顺序号。数组元素的一般形式为: 数组名[下标] 其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。例如,a[5],a[i+j],a[i++]都是合法的数组元素。 数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。在C语言中只能逐个地使用下标变量, 而不能一次引用整个数组。 例如,输出有10 个元素的数组必须使用循环语句逐个输出各下标变量:

  for(i=0; i<10; i++)  printf("%d",a[i]); 

  而不能用一个语句输出整个数组,下面的写法是错误的:

printf("%d",a);

void main()

{

    int i,a[10];

    for(i=0;i<10;)

    a[i++]=2*i+1;

    for(i=9;i>=0;i--)

    printf("%d",a[i]);

    printf("

%d %d

",a[5.2],a[5.8]);

}

for(i=0;i<10;)

    a[i++]=2*i+1;

for(i=9;i>=0;i--)

    printf("%d",a[i]);

printf("

%d %d

",a[5.2],a[5.8]);

  本例中用一个循环语句给a数组各元素送入奇数值,然后用第二个循环语句从大到小输出各个奇数。在第一个 for语句中,表达式3省略了。在下标变量中使用了表达式i++,用以修改循环变量。当然第二个for语句也可以这样作, C语言允许用表达式表示下标。 程序中最后一个printf语句输出了两次a[5]的值, 可以看出当下标不为整数时将自动取整。数组的赋值给数组赋值的方法除了用赋值语句对数组元素逐个赋值外, 还可采用初始化赋值和动态赋值的方法。数组初始化赋值数组初始化赋值是指在数组说明时给数组元素赋予初值。 数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。

  初始化赋值的一般形式为: static 类型说明符 数组名[常量表达式]={值,值……值}; 其中static表示是静态存储类型, C语言规定只有静态存储数组和外部存储数组才可作初始化赋值(有关静态存储,外部存储的概念在第五章中介绍)。在{ }中的各数据值即为各元素的初值, 各值之间用逗号间隔。例如: static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1...a[9]=9;

  C语言对数组的初始赋值还有以下几点规定:

  1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如: static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

  2.只能给元素逐个赋值,不能给数组整体赋值。 例如给十个元素全部赋1值,只能写为:

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

精彩图集

赞助商链接