我有这个代码:
typedef struct
{
int a[4];
} ArrStruct;
void printSizeOfArray(ArrStruct arrStruct)
{
printf("%lu\n", sizeof(arrStruct.a));
++(arrStruct.a[2]);
}
int main()
{
int it;
ArrStruct arrStruct;
printSizeOfArray(arrStruct);
for (it = 0 ; it < sizeof(arrStruct.a)/sizeof(int); ++it)
{
printf("%d, ", arrStruct .a[it]);
}
return 0;
}
有人告诉它,与下一个代码相比,它没有良好的运行时/内存性能。有什么区别?
void printSizeOfArray(int a[])
{
printf("%lu\n", sizeof(a));
++(a[2]);
}
int main()
{
int it;
int a[4] = {0};
printSizeOfArray(a);
for (it = 0 ; it < sizeof(a)/sizeof(int) ; ++it)
{
printf("%d, ", a[it]);
}
return 0;
}
为什么第二个代码会有更好的性能?