提问人:Dr. Joe 提问时间:7/22/2017 更新时间:7/22/2017 访问量:26
将 fix 数组传递给函数(以修改它)
passing fix array to a function (to modify it)
问:
我定义了一些修复数组,我需要用一个通用函数编写:
uint8 myArray_A[3][5];
uint8 myArray_B[3][5];
void doThings(uint8 * in)
{
*in[0][0] = someValue_0
*in[0][1] = someValue_1
}
这个函数我将调用另一个函数并为其提供所需的数组:
void main(void)
{
doThings(myArray_A);
}
这是这样做的方法吗?它会起作用吗?
答:
0赞
Garr Godfrey
7/22/2017
#1
请改为执行此操作。
uint8 myArray_A[3][5];
uint8 myArray_B[3][5];
void doThings(uint8 in[][5])
{
in[0][0] = someValue_0
in[0][1] = someValue_1
}
如果维度的大小不同,那么你需要以某种方式传递它,并做你自己的矩阵算术,坦率地说,这依赖于机器,所以不是一个好主意:
void doThings(uint8 * in, int dim1, int dim2)
{
in[0*dim2+0] = someValue_0
in[0*dim2+1] = someValue_1
}
0赞
immortal
7/22/2017
#2
函数采用指向整数的指针,即单个整数在内存空间中的位置。
这意味着,当您将指针传递到数组(即数组中第一个元素的地址 - )时,您将丢失 - 数组大小的定义中包含的结构信息。&myArray_A[0][0]
myArray_A
但是,可以通过在函数声明中指定数组参数来修复此问题。
这可以通过定义数组类型或在参数中指定数组大小来完成typedef int[3][5] my_array_t
void doThings(uint8[3][] in)
- 奖励:您的数组大小,以便您只能在单个位置更新大小,并使更改在代码中传播。
#define
评论