【发布时间】:2018-05-14 14:25:19
【问题描述】:
我正在处理我的 I²C 读取函数,以将数组指针传递给函数并从缓冲区复制数据。
现在我只是在测试在代码块中传递数组以查看结果的方法。
我的问题:
- 从 main 传递给函数的数组是否不正确?
- 我开发函数并将数组作为指针传递的方式也是一种好的代码策略吗?
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
uint8_t reaArr (uint8_t len, uint8_t *data);
int main(void)
{
uint8_t receive[9];
uint8_t k;
receive[9] = reaArr(9, receive);
for (k=0; k<9; k++)
{
printf("%d\n", receive[k]);
}
return 0;
}
uint8_t reaArr (uint8_t len, uint8_t *data)
{
uint8_t arr[9] = {20, 55, 66, 33, 5, 4, 45, 27, 59}, i, arrIndex = len;
for (i=0; i<arrIndex; i++)
{
data[i] = arr[i];
}
return *data;
}
【问题讨论】:
-
receive[9],此处索引超出范围,最大索引应为 8
-
也是 reaArr 中的最后一条语句
return *data返回数组数据的第一个元素,因为数组的名称是指向数组第一个元素的指针,所以基本上你取消引用指向第一个元素的指针数组数据,并返回它。 -
Re"from main without correct":没有什么?是不是少了一个字?请通过editing your question 回复,而不是在 cmets 中(without "Edit:"、"Update:" 或类似的 - 问题应该看起来好像是今天写的)。
标签: arrays c pointers parameter-passing