我需要就此事提出一些意见。我需要知道解决这个问题的最佳方法是什么。
如果我需要返回指向某个结构的指针,我可以返回一个uint8_t类型的指针,该指针指向该结构的起始地址,还是应该是指向结构的指针?
例如假设我们有以下结构:
typedef struct
{
uint8_t type;
uint8_t num;
uint16_t Id;
} myStruct_t;
myStruct_t x[10];
我们有一个函数应该根据类型返回指向x数组的某个元素的指针。现在应该将函数声明如下:
int function_x( myStruct_t * ptr )
{
...
//ptr = &x[0];
memcpy( ptr, &x[0], sizeof(..) )
return 0;
}
或者我可以将其声明为:
int function_x( uint8_t * ptr )
{
...
ptr = (uint8_t *)&x[0];
return 0;
}
在后一种情况下,我们可以通过执行以下操作来重新调整函数:
....
myStruct_t resp;
int r;
r = function_x( (uint8_t *)&resp );
printf("%d\n", resp.type );
...
这两个案例都经过测试并证明有效,但这里的问题是哪种方法被认为是更可接受的方法,而且更令人不悦?