1124C语言----指向多维数组的指针和指针变量

来源:互联网 发布:aaa软件教育学院 编辑:程序博客网 时间:2024/04/28 10:12

总结一下今天所学的C语言:

第一;如果有一个实参数组,想在函数中改变此数组的元素的值,实参与形参的对应关系有以下4种:

1)   形参和实参都是数组名。

main()

{int a[10];

  ……

 f(a,10)

  ……

f(intx[],int n)

{

 ……

}


}

a和x指的是同一组数组。

2)   实用数组,形参用指针变量。

main()

{int a[10];

  ……

 f(a,10)

  ……

f(int*x,int n)

{

 ……

}


}

3)   实参、型参都用指针变量。

4)   实参为指针变量,型参为数组名。

对于以上的内容在这里做的两个针对练习:

练习(1)用实参指针变量改写将n个整数按相反顺序存放。


最后需要注意的一点是,main函数中的指针变量p是有确定值的,即如果用指针变作实参,必须现使指针变量有确定值,指向一个已定义的数组,记住咯!!

练习(2)用选择法对10个整数排序。


在这里可以延伸一点的是:函数sort用数组名作为形参,也可改为用指针变量,这时函数的首部可以改为:sort(int *x,int n) 其他可一律不改。

第二点:指向多维数组的指针和指针变量

1.   多维数组的地址

设有整型二维数组a[3][4]如下:

0   1  2   3

   4   5   6   7

8   9 10  11

它的定义为:

inta[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}

设数组a的首地址为1000,各下标变量的首地址及其值如图所示。

我在前面已经学过C语言是允许把一个二维数组分解为多个一维数组来处理,因此数组a可分解为三个一维数组,即a[0]a[1]a[2]。每一个一维数组又含有四个元素。

 我们再看一下这个若有a[0]数组,含有a[0][0]a[0][1]a[0][2]a[0][3]四个元素。数组及数组元素的地址表示如下:从二维数组的角度来看,a是二维数组名,a代表整个二维数组的首地址,也是二维数组0行的首地址,等于1000a+1代表第一行的首地址,等于1008。如图:








原创粉丝点击