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