C语言如何在子函数中对主函数中的二维数组值进行修改?二维数组已经在主函数中用动态数组分配了空间.
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/20 06:53:28
C语言如何在子函数中对主函数中的二维数组值进行修改?二维数组已经在主函数中用动态数组分配了空间.
用数组时,必须要知道二维数组的后一个维度,否则无法正确修改,比如:
void modify(int a[][10])
{
a[1][2] = 12;
a[2][5] = 25;
}
void main()
{
int a[5][10];
a[1][2] = 0;
a[2][5] = 0;
modify(a);
printf("a(1,2)=%d,a(2,5)=%d\n",12,25);
}
用指针方式实现时要注意二维数组的建立过程.比如以上的int a[5][10],用指针实现相同功能的代码如下:
void modify(int **a)
{
a[1][2] = 12;
a[2][5] = 25;
}
void main()
{
int **a;
a = (int **) malloc( sizeof(int *) *5);
for(int i=0 ; i
再问: 这样很死板,我想写个通用点的,因为我的二维数组维数在变化,尤其是最后一个维度在变化。如果在子函数的形参中固定了最后一个维度的话,就没有任何灵活性了。我给子函数传了数组的首地址,然后在子函数中用一维数组的形式赋值(我主要是想赋值),但是在主函数中调用数组时值不对,也就是说值并没有被修改,不是说二维数组在内存中也是按列排列的么?难道在子函数中这个列就不管用了?
再答: 如果用二维数组,以上用指针实现的过程中把维数设成变量就可以了,但是这样初始化时稍微有点儿麻烦。 还有一种做法,就是使用一维数组来存储二维数据的值,比如把int a[5][10]转换为int a[50],在读取时进行坐标转换,效果也是一样的,如: int getelement(int *a, int i, int j) { return a[i*10+j]; } void setelement(int *a, int i, int j, int value) { a[i*10+j] = value; } void modify(int *a) { setelement(a, 1, 2, 12); setelement(a, 2, 5, 25); } void main() { int *a; a = (int *) malloc( 5*10*sizeof(int*)); modify(a); printf("a(1,2)=%d, a(2,5)=%d\n",getelement(a,1,2),getelement(a,2,5)); }
再问: 如果用二维数组,以上用指针实现的过程中把维数设成变量就可以了,但是这样初始化时稍微有点儿麻烦 ---------------------- 这点没怎么看明白,能否请您把这个说详细点?有例子更好了。谢谢!
再答: 第一、就是在前面用二维数组实现的例子中,把5和10改成二维数组的行数和列数就可以了,如: int m, n; int **a; /* 二维数组的动态实现只能使用int**类型,这样才可以用a[i][j]方式访问数组元素*/ m = 5, n = 10; /* m 行 n 列的数组 */ a = (int **) malloc( m*sizeof(int *)); /* 这里分配的只是一个指向每一行的指针 */ for(int i=0 ; i
void modify(int a[][10])
{
a[1][2] = 12;
a[2][5] = 25;
}
void main()
{
int a[5][10];
a[1][2] = 0;
a[2][5] = 0;
modify(a);
printf("a(1,2)=%d,a(2,5)=%d\n",12,25);
}
用指针方式实现时要注意二维数组的建立过程.比如以上的int a[5][10],用指针实现相同功能的代码如下:
void modify(int **a)
{
a[1][2] = 12;
a[2][5] = 25;
}
void main()
{
int **a;
a = (int **) malloc( sizeof(int *) *5);
for(int i=0 ; i
再问: 这样很死板,我想写个通用点的,因为我的二维数组维数在变化,尤其是最后一个维度在变化。如果在子函数的形参中固定了最后一个维度的话,就没有任何灵活性了。我给子函数传了数组的首地址,然后在子函数中用一维数组的形式赋值(我主要是想赋值),但是在主函数中调用数组时值不对,也就是说值并没有被修改,不是说二维数组在内存中也是按列排列的么?难道在子函数中这个列就不管用了?
再答: 如果用二维数组,以上用指针实现的过程中把维数设成变量就可以了,但是这样初始化时稍微有点儿麻烦。 还有一种做法,就是使用一维数组来存储二维数据的值,比如把int a[5][10]转换为int a[50],在读取时进行坐标转换,效果也是一样的,如: int getelement(int *a, int i, int j) { return a[i*10+j]; } void setelement(int *a, int i, int j, int value) { a[i*10+j] = value; } void modify(int *a) { setelement(a, 1, 2, 12); setelement(a, 2, 5, 25); } void main() { int *a; a = (int *) malloc( 5*10*sizeof(int*)); modify(a); printf("a(1,2)=%d, a(2,5)=%d\n",getelement(a,1,2),getelement(a,2,5)); }
再问: 如果用二维数组,以上用指针实现的过程中把维数设成变量就可以了,但是这样初始化时稍微有点儿麻烦 ---------------------- 这点没怎么看明白,能否请您把这个说详细点?有例子更好了。谢谢!
再答: 第一、就是在前面用二维数组实现的例子中,把5和10改成二维数组的行数和列数就可以了,如: int m, n; int **a; /* 二维数组的动态实现只能使用int**类型,这样才可以用a[i][j]方式访问数组元素*/ m = 5, n = 10; /* m 行 n 列的数组 */ a = (int **) malloc( m*sizeof(int *)); /* 这里分配的只是一个指向每一行的指针 */ for(int i=0 ; i
C语言如何在子函数中对主函数中的二维数组值进行修改?二维数组已经在主函数中用动态数组分配了空间.
求出二维数组周边元素之和,作为函数值返回.二维数组中的值在主函数中赋予.
帮忙写一个c语言程序,功能:求出二维数组周边元素之和,作为函数值返回.二维数组的值在主函数中赋予.
c语言.自定义函数 输入二维数组
用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4];
用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4]
编写函数fun:求出二维数组周边元素之和,作为函数值返回二维数组的值在主函数中赋予
下列程序定义了N×N的二维数组,并在主函数中赋值.
C语言,用子函数 二维数组求数组中的最大数出现错误的结果
输入一个3行4列整形二维数组的值,输出最大元素的值及其下标.在主函数中给数组赋值,子函数max中求最大值
定义了N×N的二维数组,并在主函数中赋值.请编写函数fun,函数的功能是:求出数组周边元素的平均值.
关于C语言函数的问题. 这个二维数组,用在我定义的函数当中.