gpt4 book ai didi

c++ - C++中数组的指针

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:37 26 4
gpt4 key购买 nike

我在 C++ 中使用指针时遇到了一些问题。我用不同大小的数组实现了三种方法,但计算相同。所以我决定提取计算并将它们放在一个需要数组的新方法中。但这不起作用,我不知道如何修改我的程序。

void method1() {
float a[3][3];
calculate(a, 3);
}

void method2() {
float a[4][4];
calculate(a, 4);
}

void method3() {
float a[5][5];
calculate(a, 5);
}

void calculate(float *param[], int n) {
// Code
}

我知道我可以使用全局变量或 vector 等,但我需要这个结构中的逻辑。

这是编译器错误:

Test.cpp: In function 'void method1()':
Test.cpp:7:16: error: cannot convert 'float (*)[3]' to 'float**' for argument '1' to 'void calculate(float**, int)'
Test.cpp: In function 'void method2()':
Test.cpp:12:16: error: cannot convert 'float (*)[4]' to 'float**' for argument '1' to 'void calculate(float**, int)'
Test.cpp: In function 'void method3()':
Test.cpp:17:16: error: cannot convert 'float (*)[5]' to 'float**' for argument '1' to 'void calculate(float**, int)'

提前致谢!

最佳答案

template <int n>
void calculate(float (&param)[n][n]) {
std::cout << param[x][y];
}

void method1() {
float a[3][3];
calculate(a);
}

或者,如果你想支持动态大小(不太可能),你将不得不做一个奇怪的把戏,让编译器假装它是一维数组,这很快就会变得棘手。

int index(int x, int y, int n) {return y*n+x;}

void calculate(float* param, int n) {
std::cout << param[index(x, y, n)];
}

void method1() {
float a[3][3];
calculate(a[0], 3);
}

关于c++ - C++中数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15581891/

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