C 引用数组

C 引用数组,c,C,我有一个数组,其设置大小为64,通过引用传递给函数。我收到了警告 警告C4047:'函数':'int*'与'int*[64]的间接寻址级别不同' 有人能解释一下我为什么会得到这个答案或给出一个解决方案吗?int[64]a;不是有效的C声明。看起来你的编译器正在欺骗你一些扩展技巧。你需要: int a[64] 间接寻址是指通过指针访问变量。正如指针可以引用或指向一个变量一级间接寻址一样,指针也可以指向另一个指针,而另一个指针又指向一个变量两级间接寻址。由于具有不同间接级别的两个指针可能引用两个不同

我有一个数组,其设置大小为64,通过引用传递给函数。我收到了警告

警告C4047:'函数':'int*'与'int*[64]的间接寻址级别不同'

有人能解释一下我为什么会得到这个答案或给出一个解决方案吗?

int[64]a;不是有效的C声明。看起来你的编译器正在欺骗你一些扩展技巧。你需要:


int a[64]

间接寻址是指通过指针访问变量。正如指针可以引用或指向一个变量一级间接寻址一样,指针也可以指向另一个指针,而另一个指针又指向一个变量两级间接寻址。由于具有不同间接级别的两个指针可能引用两个不同的对象,一个指针可能指向变量,而另一个指针可能指向另一个指针,因此每当在表达式中包含此类指针时,编译器都会发出警告C4047

例如,以下代码生成此警告,但编译时未做任何更改:

void main() {
    char **p;// two levels of indirection
    char *q; // one level of indirection
    p = q;   // warning C4047
}
参考-


您没有正确调用函数

现在调用它们的方式是传递数组的地址,但函数需要指向int的指针

将数组传递给函数,但不包含运算符&的地址。数组将衰减为指向第一个元素的指针

hex_to_binary(hex,bin);
...
print_64bin(bin);

这是我放在这里的错误,就像在代码中一样,在这种情况下,您显示的代码是好的。问题出在其他地方,或者您复制的代码不正确。代码可以正常工作。我只是想知道为什么编译器认为它是错误的。不应该给出您这里的示例。包含所有代码,否则我们无法帮助您。这还不完整。比如说,没有主管道。显示您的整个程序,包括标题。是否有单独的十六进制到四进制的原型?不,我的代码中没有原型
hex_to_binary(hex,bin);
...
print_64bin(bin);