怎么把二维数组的列作为实参传给以一维数组的功能函数,主函数里怎么调用,功能函数参数怎么写
发布网友
发布时间:2022-04-22 08:59
我来回答
共1个回答
热心网友
时间:2022-04-22 10:28
可以这样写,不过为了通用起见,最好为F()函数再提供一个参数用来指明输入数组的这一行中有几个元素。
*********************************************
如果不能对功能函数进行修改(添加一些为实现此目的的参数),只能对这个二维数组转置或者将这一列提取出来保存到另一个一维数组中,再传递这个一维数组,如果可以修改,示例程序如下:
//---------------------------------------------------------------------------
#include <stdio.h>
void prt(int *a,int x,int col,int row) //x是要处理的原二维数组中的列下标,col是原数组的列数,row是原数组的行数
{
int i;
for (i = 0; i<row; i++) {
printf("%d ",a[x+col*i]);
}
putchar('\n');
}
int main(int argc, char* argv[])
{
int a[11][10],i;
for (i = 0; i<11*10; i++) { //填充原二维数组并输出
a[i/10][i%10]=i;
printf("%3d ",a[i/10][i%10]);
if ((i+1)%10==0) putchar('\n');
}
printf("\n\n\n");
prt(&a[0][0],2,10,11);//示例,输出二维数组a的下标为2的列的元素。
return 0;
}
//---------------------------------------------------------------------------追问可能说错了。
应该是把二维数组的行作为参数传给以一维数组为形参的功能函数。比如这个函数为
:void F(int [],);
主函数里定义了a[3][9],怎么调用F,我要把a第0行的元素传给函数,主函数里是这么写吗:
F(a[0]);
追答可以这样写,不过为了通用起见,最好为F()函数再提供一个参数用来指明输入数组的这一行中有几个元素。
C++中二维数组作为参数传递到一个函数
方法1、 第一维的长度可以不指定;但必须指定第二维的长度。include <stdio.h> void print_a(int a[][5], int n, int m){ int i, j;for(i = 0; i < n; i++){ for(j = 0; j < m; j++)printf("%d ", a[i][j]);printf("\n");} } 方法2、指向一个有5个元素一...
我有一个二维数组,要传递给参数为一维数组的函数,可以吗?
可以的!你这样定义二维数组 int arr[10][10];传递给一维数组做参数的函数时,需要这样传递 void Function( int a[] ); //函数原型 调用的时候: Function( arr[1] ); 或者 Function( *(arr + 1) );Function( arr[2] ); 或者 Function( *(arr + 2) );即,你传入一维的...
C语言中如何将二维数组作为函数的参数传递
1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:void f(int array[3][10]); //正确 void f(int array[][10]); //正确上面的两种二维数组形参表示都是正确的。2、函数中用二维数组作为形参,不能把第2维或者更高维的大小省略,如下面的定义是...
c#中怎样把二维数组作为实际参数传递到以一维参数为形参的函数中,请举...
使用类封装第一维数组数据,在该类中声音第二维数据为一个数组属性即可实现 传递数据时,只需要传递类对象数组即可 public class IntA{ public IntA(int [] subValue){ this.SubValue = subValue;} public int Value{get;set;} public int [] SubValue{get;set;} } 调用使用传递IntA对象的集合 ...
...编写函数fun, 函数的功能是: 将M行N列的二维数组中的数据, 按列的...
函数使用两个嵌套的for循环以列为顺序遍历二位数组,将其中每一个数据元素都存储进准备好的一维数组中。因为c语言函数无法将整个数组作为返回值,故函数会返回一个指向一维数组的指针。具体代码如图:
将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。在主函数...
void fun(int Data[][4],int ColData[]){ int i,j;for(i=0;i<5;i++){ for(j=0;j<4;j++){ ColData[j*5+i] = Data[i][j];} } } int main(int argc, char **argv){ int Data[5][4] = { 9, 7, 6, 6,3, 5, 3, 3,6, 6, 4, 7,7, 5, 1, 4,1, 2,...
怎么把二维数组赋值给一维数组?
用memset函数(包含头文件string.h就可以使用了)比如:int a[m][n];// memset(a,0,sizeof(a));就可以了。
c语言中怎么用二维数组作为函数参数
二维数组作为函数参数,实参可以直接使用二维数组名,在被调用函数中对形参数组定义可以指定所有维数的大小,也可以省略第一维的大小说明,如:它们是合法且等价,也可以使用如下形式:但不能省略第二维的大小,如下面的定义是不合法的,编译时会出错:因为从实参传递来的是数组的起始地址,如果在形参中不...
关于C语言的二维数组作为函数参数的问题?
int (*arr)[m];所以,传递二维数组作为参数,实际上就是传递了一个指针。将形参的类型定义成int*,再在函数内部转换回指向数组的指针就行了,比如:void f(int *p,int row,int column){ int (*arr)[column]=(int (*)[column])p;//使用二维数组arr } 这样传递参数:int n=5,m=6;int ...
C语言问题,请问二维数组的函数参数是怎么传递的?
void shuchu(int **array_num);在函数中调用时,直接传递数组名就可以了,数组名可以视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用 shuchu(a);另外,一个建议:不要在传参时忽略数组的长度,最好显式的以参数的形式传递给函数 或者,在数组中做标志,在...