訪問結構構件我有傳遞給函數作爲恆定指針的結構中,我的問題是以下:有功能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;'中丟失轉換。這些類型已經兼容,免費鑄造可以隱藏錯誤。 –
你確實需要'for'循環嗎?我認爲,對於單個成員(數組類型),你可以直接使用'memcpy()',不是嗎? –
它是* int * main,不是void main。我冒昧地改正它。 – Jens