我有很多具有不同名称的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;
现在我想写一个函数,其中接收参数(数组名称),然后在switch case中使用参数
function_name(string name)
{
switch(name)
{
case a:
break;
case b:
break;
}
}
但是当我这样做时,我得到了一些警告 警告C4047:'=':'int'的间接级别与'const int(*)[2]'
不同请帮我从我的项目中删除此警告
答案 0 :(得分:0)
您可能需要使用指向数组的指针,但使用指针指向int
会更容易。如评论中所述,您不能简单地将字符串名称映射到变量;无论如何,你真的不想多次编写代码。
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]);
void function_name(int (*arr)[][2])
{
int i = 0;
int j = 1;
int v = (*arr)[i][j];
…
}
使用以下方式调用:
function_name(&a);
function_name(&b);
指向数组的指针的优点是你可以正常使用下标(或多或少;你需要使用(*arr)
表示法。)
答案 1 :(得分:-1)
你不能这样做。你需要采用数组变量t_huff []。你可以用t_huff命名为 &安培; t_huff =一个;