十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
二维数组无法作为参数直接传递给函数,但是可以利用二维数组内部数据的连续性,将二维数组的地址按照一维数组的方式传递给函数,并传入对应的行列数,从而实现函数内打印二维数组的效果。
创新互联建站专注于港南企业网站建设,成都响应式网站建设,成都做商城网站。港南网站建设公司,为港南等地区提供建站服务。全流程按需网站设计,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务
以整型为例,具体方式如下:
void print_array(int *a, int m, int n)//a为一个m行,n列的二维数组的首地址。
{
int i, j;
for(i = 0; i m; i ++)
{
for(j = 0; j n; j ++)
{
printf("%d,", a[i*n+j]);//a[i*n+j]也就是原始二维数组第i行第j列的元素。
}
printf("\n");//每行结束输出换行。
}
}
调用时:
sum=fun1(a[N]);
printf("sum=%d\n",sum);
定义中:
int fun1(int a[N],int i)
{
int s=0;
for(i=0;iN;i++)
s=s+a[i];
return(s);
}
注意定义的函数int fun1(int a[N],int i),在调用函数的时候语法是sum=fun1(int a[N],int i);错误在于调用函数时()内的参数应该和定义时一样
#include
void paixu(int array[],int len)
{
int t,i,j;
for (i=0;ilen-1;i++)
{
for (j=0;jlen-1-i;j++)
if (array[j]array[j+1])
{
t=array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
}
int main ()
{
int in,i,array[128];
printf("输入一个正整数:");
scanf("%d",in);
printf("输入%d个整数:\n",in);
for (i=0;iin;i++)
{
scanf("%d",array[i]);
}
paixu(array,in);
printf("排序后: ");
for (i=0;iin;i++)
{
printf("%d ",array[i]);
}
return 0;
}
#include "stdio.h"
void s(int *a,int n)//最好指定数组的长度n
{
int t1,t2,i;
t1=a[n-2]; //末位两个元素要存回首位两位,先保存
t2=a[n-1];
for(i=n-1;i1;i--) //其它位置,循环向后移两位就行,后8位就确定了
{
a[i]=a[i-2];
}
a[0]=t1; //末位的两位存回首位,这样就全排完了
a[1]=t2;
}
void main()
{
int a[10],i;
for(i=0;i10;i++)
scanf("%d",a[i]);
s(a,10);
for(i=0;i10;i++)
printf("%d ",a[i]);
}
方法
有2
将该数组定义为全局变量,即:
int
g_arr;
void
fun()
{...}
void
main()
{...}
2.将该数组作为函数参数传递到自定义函数里,即:
void
fun(int
arr[])
{...}
void
main()
{
int
arr[10];
fun(arr);
}