下面是我的函数,它接受一个大小为2的char数组,将它传递给一个函数,该函数应该返回相同的2个字符(这是一个复杂的过程,因为它正在与硬件设备通信)。 问题是当我将char(* in)[2]传递给函数时;当我打印元素时,它只显示[0]而不是[1]中的数据。不知道为什么。任何帮助表示赞赏。
int function(struct device *d, char (*in)[2], char (*out)[2])
{
printf("in: %c %c\n", *in[0], *in[1]); // TEST
uint16_t data = (*in[0] << 8) + *in[1];
send_request(d, IN, ECHO, data, 0, *out, 2);
printf("%s\n", *out);
return 0;
}
由于 鲍勃
答案 0 :(得分:4)
我假设您要将数组地址传递给function()
。
问题是[]运算符的优先级高于*运算符。
正确的代码是。
printf("in: %c %c\n", (*in)[0], (*in)[1]);
首先取消引用in
以获取原始数组,然后获取该数组的元素。