关于二维数组传参做形参

2017-12-09  本文已影响0人  且听风吟淡漠一生

可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如:

void Func(int array[3][10]);

void Func(int array[][10]);

例2 将二维数组依旧当作二维数组来处理

下面是一个字符串数组的参数传递程序,实现将字符串数组中的字符串按照从小到大的顺序进行排序:

//WordSort实现了对5个字符串的排序

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

void WordSort(char p[][10],int RowSize)

{

int n=0,m;

char temp[10];

for(n=0;n

for(m=n+1;m

if( strcmp(p[m],p[n]) < 0 )

{

strcpy(temp,p[n]);

strcpy(p[n],p[m]);

strcpy(p[m],temp);

}

for(n=0;n<5;++n)

printf("In subfunction:%s\n",p[n]);

}

void main()

{

int k=0;

char word[5][10];

for(;k<5;++k)

scanf("%s",&word[k]);

WordSort(word,5);

printf("sorted word:\n");

for(k=0;k<5;k++)

printf("In main function:%s\n",word[k]);

system("pause");

}

例3 用“行指针”传递参数

运行下面程序:

/************************************/

//二维数组作为形参的参数传递方式之一

/************************************/

#include

void print_array_1(int (*a)[3], int Row_Size)

{

int j;

for(j=0;j<3*Row_Size;j++)

{

printf("%d ",(*a)[j]);

if(j%3==2) printf("\n");

}

}

void print_array_2(int (*a)[3], int Row_Size)

{

int i,j;

for(i=0;i

{

for(j=0;j<3;j++)

printf("%d ",*(*(a+i)+j));

printf("\n");

}

}

void main()

{

int i,j,value=0;

int a[4][3]={0};

for(i=0;i<4;i++)

for(j=0;j<3;j++)

a[i][j]=value++;

print_array_1(a,4);

printf("\n");

print_array_2(a,4);

}

上一篇下一篇

猜你喜欢

热点阅读