2014-10-02 75 views
1

下面是我的函数,它接受一个大小为2的char数组,并将它传递给一个函数,并且该函数应该返回相同的2个字符(当它与它交谈时,它有点复杂的过程一个硬件设备)。 问题是当我将char(* in)[2]传递给函数时;当我打印元素时,它只显示[0]中的数据,而不是[1]中的数据。不知道为什么。任何帮助赞赏。将char数组的指针传递给函数

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

这个:'* in [0]'很可能不会解析你的想法。同样在'[1]'中的*。 – WhozCraig 2014-10-02 06:57:57

回答

4

我假设你正在传递数组的地址给你function()

问题是[]运算符比*运算符具有更高的优先级。

正确的代码是。

printf("in: %c %c\n", (*in)[0], (*in)[1]); 

首先取消引用in来获得原始数组,然后你会得到数组的元素。

+0

您首先发布,所以我认为它是唯一公平的给你的观点。谢谢你。 – 2014-10-02 07:25:40