我有一个结构体,我将其作为常量指针传递给函数,我的问题是:以下两个updatedFields函数的实现有什么区别:
typedef struct
{
int spec[100];
int spec1[200];
int spec2[200];
int spec3[500];
int spec4[100];
int spec5[700];
float value[100];
char desc[1000]:
}t_product;
void updateFields_1(t_product const* context)
{
int i,buffer[1500];
int * pt_int;
pt_int = (int*)context->spec1;
for(i = 0; i < 200; i++)
{
buffer[i] = pt_int[i];
}
pt_int = (int*)context->spec3;
for(i = 0; i < 500; i++)
{
buffer[i] = pt_int[i];
}
...
}
void updateFields_2(t_product const* context)
{
int i,buffer[1500];
for(i = 0; i < 200; i++)
{
buffer[i] = context->spec1[i];
}
for(i = 0; i < 500; i++)
{
buffer[i] = context->spec3[i];
}
...
}
int main(void)
{
t_product prod;
/* Initialisation of the structure */
...
updateField(&prod);
}
我的意思是,使用指向结构体成员(指向数组的指针)的指针是否有任何优势,而不是直接访问结构体成员。
这可能是一个愚蠢的问题,但我不知道访问结构体成员是否会“消耗”更多操作。
pt_int = (int*)context->spec3;
中去掉强制类型转换。这些类型已经兼容,不必要的强制类型转换可能会隐藏错误。 - M Oehmfor
循环吗?我认为,对于单个成员(数组类型),你可以直接使用memcpy()
,不是吗? - Sourav Ghosh