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

标签 c arrays function

下面是我的函数,它接受一个大小为 2 的字符数组,将其传递给一个函数,该函数应该返回相同的 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;
}

谢谢 鲍勃

最佳答案

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

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

正确的代码应该是。

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

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

关于c - 将 char 数组的指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26155757/

相关文章:

c - 将 __m256 拆分为两个 __m128 寄存器

c++ - 无法使用 libssh2 进行编译

c - 堆栈实现中的引用调用错误(C程序)

javascript - 可以将项目添加到队列的后面,旧的项目可以从队列的前面删除

javascript - 即使提示位于函数之后,我的 Javascript 提示也会在函数之前运行

c - 对 seccomp 的隐式引用

c - 如何在c中 sleep

javascript - 未知长度数组用于按顺序执行 promise 的功能

c++ - 多次返回一个值

javascript - 新手 JS 寻求帮助来完成练习