获取变量中的数组名称

时间:2014-08-14 04:16:04

标签: c

我有很多具有不同名称的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]'

不同

请帮我从我的项目中删除此警告

2 个答案:

答案 0 :(得分:0)

您可能需要使用指向数组的指针,但使用指针指向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)表示法。)

答案 1 :(得分:-1)

你不能这样做。你需要采用数组变量t_huff []。你可以用t_huff命名为 &安培; t_huff =一个;