我有很多不同名称的2D阵列
喜欢
const int a[][2]
{
{1,2},
{3,4},
};
const int b[][2]
{
{5,6},
{7,8},
};
还有很多....
我把数组名称放在其他变量中
int t_huff,f_huff;
t_huff =a;
f_huff =b;
现在我想编写一个函数,在其中获取参数(数组名),然后在切换时使用参数
function_name(string name)
{
switch(name)
{
case a:
break;
case b:
break;
}
}
但是当我这样做时,我得到了一些警告,例如
警告C4047:“ =”:“ int”的间接级别与“ const int(*)[2]”不同
请帮助我从项目中删除此警告
最佳答案
您可能需要使用指向数组的指针,但是使用指向int
的指针会更容易。如评论中所述,您不能简单地将字符串名称映射到变量。无论如何,您确实不想多次编写代码。
选项1:指向int
的指针
void function_name(int *base)
{
int i = 0;
int j = 1;
int v = base[i * 2 + j];
…
}
使用以下命令调用它:
function_name(&a[0][0]);
function_name(&b[0][0]);
选项2:指向数组的指针
void function_name(int (*arr)[][2])
{
int i = 0;
int j = 1;
int v = (*arr)[i][j];
…
}
使用以下命令调用它:
function_name(&a);
function_name(&b);
指向数组的指针的优点是您可以照常使用下标(或多或少;不过,您需要使用
(*arr)
表示法)。