1、当我们使用二维数组作为参数传递的时候,所传递的二维数组的第二项必须为一个常数,否则编译不能通过,如int a[][3];
例如:
#include<stdio.h> #define N 3 int turn(int a[][N]) //注意此处 { int i,j,temp; temp=0; for(i=0; i<N; i++) { for(j=0; j<N; j++) { if(i<j) { temp =a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } } } } int main() { int a[3][3]= {{12,2,8},{22,16,4}, {10,6,14}}; int i,j; turn(a); for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("%4d",a[i][j]); } printf("\n"); } return 0; }
2、一维数组指针作为形参传递,如int (*a)[3],其实二维数组就相当于一位数组的指针,所以这样也是可以的。
#include<stdio.h> #define N 3 int turn(int (*a)[N]) //注意此处 { int i,j,temp; temp=0; for(i=0; i<N; i++) { for(j=0; j<N; j++) { if(i<j) { temp =a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } } } } int main() { int a[3][3]= {{12,2,8},{22,16,4}, {10,6,14}}; int i,j; turn(a); for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("%4d",a[i][j]); } printf("\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/gotowu/article/details/47261313