我有很多不同名称的二维数组,比如
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案例中使用该参数
function_name(string name)
{
switch(name)
{
case a:
break;
case b:
break;
}
}但是当我这样做的时候,我得到了一些警告,比如warning C4047:'=‘:' int’与'const int (*)2‘的间接级别不同。
请帮助我从我的项目中删除此警告
发布于 2014-08-14 12:26:30
您可能需要使用指向数组的指针,但使用指向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)表示法)。
发布于 2014-08-14 12:21:35
你不能这样做。您需要获取数组变量t_huff[]。你可以把一个t_huff命名为&t_huff=a;
https://stackoverflow.com/questions/25299984
复制相似问题