gpt4 book ai didi

c++ - 在 C++ 中使用函数操作多维数组

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:19 24 4
gpt4 key购买 nike

我正在尝试使用函数修改 C++ 中二维数组的内容。我一直无法找到有关如何通过引用将二维数组传递给函数然后操作单个单元格的信息。

我试图解决的问题具有以下格式。为了简洁起见,我做了一个简单的程序。

#include<cstdlib>
#include<iostream>
using namespace std;

void func(int& mat) {
int k,l;
for(k=0;k<=2;k++) {
for(l=0;l<=2;l++) {
mat[k][l]=1; //This is incorrect because mat is just a reference, but
// this is the kind of operation I want.
}
}

return;
}

int main() {
int A[3][3];
int i, j;
char jnk;

for(i=0;i<=2;i++) {
for(j=0;j<=2;j++) {
A[i][j]=0;
}
}

func(A);

cout << A[0][0];
return 0;
}

所以 A[0][0] 的值应该从 0 变为 1。正确的做法是什么?非常感谢...

最佳答案

数组不是按值传递的,所以你可以简单地使用

void func(int mat[][3])

并且,如果您在 func 中修改 mat 的值,您实际上是在 main 中修改它。

如果您事先知道矩阵的大小,则可以使用该方法,否则请考虑使用指针:

#include <iostream>

void f(int **m, int r, int c) {
m[0][0]=1;
}

int main () {

int **m;
int r=10,c=10;
int i;

m = (int**)malloc(r*sizeof(int*));

for (i=0; i<r;i++)
m[i] = (int*)malloc(c*sizeof(int));

f(m,r,c);

printf("%d\n",m[0][0]);

for(i=0;i<r;i++)
free(m[i]);

free(m);

return 0;

}

关于c++ - 在 C++ 中使用函数操作多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9672731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com