0

我正在尝试将二维数组(字符串数组)传递给 C 中的函数,但遇到“不兼容的指针类型”警告。

In function ‘main’:
warning: passing argument 1 of ‘addCodonstoHash’ from incompatible pointer type

代码如下。我正在尝试使用 uthash 创建一个哈希表,其中包含 3 个字母的字符串作为键(代表 DNA 密码子),以及代表密码子翻译成的氨基酸的相关字符值。所以本质上,从下面的代码中,我想要一个形式的哈希表

{“GCT”:“A”,“GCC”:“A”,“GCA”:“A”,“GCG”:“A”,“GCN”:“A”}

其中“A”代表丙氨酸。但是现在,我无法简单地将密码子数组传递给应该解析它们并将它们添加到哈希表的函数。我已经阅读了 不兼容的指针类型 并将 字符串数组作为参数传递给 C 中的函数无济于事......我我了解数组是如何分配并降级为指针的,但显然不是。

此外,当我尝试计算 addCodonstoHash 中数组的长度时(将有许多不同大小的数组代表各种氨基酸),它分别从 printf 调试行返回 8 和 2,我可以不知道为什么会这样。你们能引导我朝着正确的方向前进吗?

/* Helper method for adding codons to hash table from initialized arrays */
void addCodonstoHash(char AAarray[][4], char AAname)
{   int i, size1, size;
    size1 = sizeof(AAarray);
    size  = size1 / sizeof(AAarray[0]);

    /* Debugging lines */
    printf("%d\n", size1);
    printf("%d\n\n",size);

    for (i = 0; i < (sizeof(AAarray) / sizeof(AAarray[0])); i++)
    {   add_codon(AAarray[i], AAname);
        printf(AAarray[i]);
        printf("\n");
    }
}


int main(int argc, char *argv[])
{   /*
     * Generate arrays for codons corresponding to each amino acid, will
     * all eventually be incorporated into hash table as keys, with AA
     * values.
     */
    const char Ala[][4] = {"GCT", "GCC", "GCA", "GCG", "GCN"};
    ...


    addCodonstoHash(Ala, 'A');

    delete_all(); 
    return 0;
}

谢谢!

4

1 回答 1

1

Ala有类型const char(*)[4](除非它用作sizeof&操作数),但参数有类型char(*)[4]。您需要将此声明为const.

于 2012-09-03T12:00:48.597 回答