将char数组的指针传递给函数

时间:2014-10-02 06:55:50

标签: c arrays function

下面是我的函数,它接受一个大小为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;
}

由于 鲍勃

1 个答案:

答案 0 :(得分:4)

我假设您要将数组地址传递给function()

问题是[]运算符的优先级高于*运算符。

正确的代码是。

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

首先取消引用in以获取原始数组,然后获取该数组的元素。

相关问题