C语言中,数组能够经过函数的形参或实参输入到函数中, 但运算后返回时就有问题了,由于C语言的函数只能返回一个数,不能返回数组。这个问题能够经过设置全局变量的方式予以解决,请看下面的例题。数组
例题. 编制函数MT()用以计算一个3*3矩阵的转置,并将结果返回到main函数中。函数
1: #include <stdio.h>
2:
3: void PM(int x[3][3]);
4: void MT(int a[3][3]);
5:
6: int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
7:
8: main()
9: {
10: PM(a);
11: MT(a);
12: PM(a);
13: }
14:
15: void MT(int a[3][3])
16: {
17: int i,j,b[3][3];
18: for(i=0;i<=2;i++)
19: {
20: for(j=0;j<=2;j++)
21: {
22: b[j][i]=a[i][j];
23: }
24: }
25: for(i=0;i<=2;i++)
26: {
27: for(j=0;j<=2;j++)
28: {
29: a[i][j]=b[i][j];
30: }
31: }
32: }
33:
34: void PM(int x[3][3])
35: {
36: int i,j;
37: for(i=0;i<=2;i++)
38: {
39: for(j=0;j<=2;j++)
40: {
41: printf("%d ",x[i][j]);
42: }
43: printf("\n");
44: }
45: }
程序说明:spa
本程序包含3个函数:main();MT() -- 用以求矩阵的转置;PM()-- 打印矩阵; code
第6行: int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};rpc
定义了一个3*3的全局数组,并对该数组初始化;io
第15行:void MT(int a[3][3])class
定义了函数MT,并将全局数组a做为其形参;变量
第11行:MT(a)程序
主程序调用函数MT后,全局数组的元素被转置。语言
计算结果:
1 2 3
4 5 6
7 8 9
1 4 7
2 5 8
3 6 9