我正在尝试将2d数组(字符串数组)传递给C中的函数,但是遇到了“不兼容的指针类型”警告。
In function ‘main’:
warning: passing argument 1 of ‘addCodonstoHash’ from incompatible pointer type
代码如下。我正在尝试使用uthash创建一个哈希表,该表具有3个字母的字符串作为键(代表DNA密码子),以及代表密码子被翻译成的氨基酸的相关char值。所以从本质上讲,从下面的代码中,我想要一个表格
的哈希表{“GCT”:'A',“GCC”:'A',“GCA”:'A',“GCG”:'A',“GCN”:'A'}
其中'A'代表丙氨酸。但是现在,我很难将密码子数组传递给应该解析它们的函数并将它们添加到哈希表中。我已经通读了 Incompatible pointer type 和 Passing an array of strings as parameter to a function in 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;
}
谢谢!
答案 0 :(得分:1)
Ala
的类型为const char(*)[4]
(除非用作sizeof
或&
操作数),但参数的类型为char(*)[4]
。您需要将此声明声明为const
。