c语言函数定义数组 c语言定义数组的三种方式( 二 )


(3)如果想使一个数组的元素值全部为0 , 可以用下面的方法:
static int a[10]={0,0,0,0,0,0,0,0,0,0};
不能用:
static int a[10]={0*10};
如果对static型数组不赋初值,系统会对定义的所有数组元素自动赋以0值 。
(4)在对全部数组元素赋初值时,可以不指定数组长度 。
3.一维数组的引用方法是:
C语言规定不能一次引用整个数组,引用时只能逐个元素引用,数组元素的表示形式为:
数组名[下标]
下标可以是整型常量或整型表达式 。如:
a[0]=a[5]+a[7]-a[2*3];
1.2 二维数组的定义、初始化和引用
1.二维数组定义的一般形式为
类型说明符数组名[常量表达式][常量表达式]
C语言采用上述定义方法,c语言函数定义数组我们可以把二维数组看做是一种特殊的一维数组:它的元素又是一维数组 。在C语言中,二维数组中元素的排列顺序是:先按行存放,再按列存放,即在内存中先顺序存放第一行的元素 , 再存放第二行的元素 。
2.二维数组的初始化:二维数组可以用下面的方法初始化:
(1)分行给二维数组赋初值 。如:
static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
以上赋值把第一个花括号内的数据赋给第一行元素,第二个花括号内数据赋给第二元素…,即按行赋值 。
(2)可以将所有的数据写在一个花括号内,按数组排列的顺序对各元素赋值 。
(3)可以对数组的部分元素赋初值 。如:
static int a[3][4]={{1},{5},{9}};
以上赋值的结果是:数组第一列的元素分别赋了初值1,5,9,其余元素的值都是0 。
(4)如果对二维数组的全部元素都赋初值,则定义数组时对第一维的长度可以不指定 , 但第二维的长度不能省 。
3.二维数组的引用:二维数组的元素可以表示为:
数组[下标][下标]
在引用二维数组时,必须是单个元素 , 不能是整个数组名 。下标可以是一个表达式,但不能是变量 。如果下标是一个表达式,注意表达式的值不能超出数组定义的上、下限 。
C语言数组的定义及引用2
指针数组说明的一般形式为:
类型说明符 *数组名[数组长度]
其中类型说明符为指针值所指向的变量的类型 。例如:
int *pa[3]
表示pa是一个指针数组,它有三个数组元素,每个元素值都是一个指针 , 指向整型变量 。
【例10-33】通常可用一个指针数组来指向一个二维数组 。指针数组中的每个元素被赋予二维数组每一行的首地址,因此也可理解为指向一个一维数组 。
main(){
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
int i;
for(i=0;i3;i++)
printf("%d,%d,%d ",a[i][2-i],*a[i],*(*(a+i)+i));
for(i=0;i3;i++)
printf("%d,%d,%d ",*pa[i],p[i],*(p+i));
}
本例程序中,pa是一个指针数组,三个元素分别指向二维数组a的各行 。然后用循环语句输出指定的数组元素 。其中*a[i]表示i行0列元素值c语言函数定义数组;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p与a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值 。读者可仔细领会元素值的各种不同的表示方法 。
应该注意指针数组和二维数组指针变量的区别 。这两者虽然都可用来表示二维数组,但是其表示方法和意义是不同的 。
二维数组指针变量是单个的变量,其一般形式中"(*指针变量名)"两边的括号不可少 。而指针数组类型表示的是多个指针(一组有序指针)在一般形式中"*指针数组名"两边不能有括号 。例如:

推荐阅读