我有两个函数,一个是数组函数,另一个是指针参数。他们返回相同的结果,但我不知道哪个更好用。
#define SIZE 1024
int sumA(int a[SIZE][SIZE])
{
int sum = 0;
for(int y = 0; y < SIZE; y++)
for(int x = 0; x < SIZE; x++)
sum += a[x][y];
return sum;
}
int sumB(int *a)
{
int sum[4] = {0, 0, 0, 0};
for( int i = 0; i < SIZE*SIZE; i += 4 )
{
sum[0] += a[i+0];
sum[1] += a[i+1];
sum[2] += a[i+2];
sum[3] += a[i+3];
}
return sum[0] + sum[1] + sum[2] + sum[3];
}
最佳答案
在这两种情况下,您都是通过引用传递数组,因此没有区别。
你的 sum 函数显然对传入的数组有很多了解。所以我认为最好强制数组是函数所期望的那种。
编辑:如果将类型为 int[][] 的变量传递给接受 int 指针 (int*) 的函数,则必须将该变量显式转换为 int*,否则编译器将不会接受它。
因此
int sumA(int a[SIZE][SIZE])
是两者中较好的。
关于c++ - 用数组或指针引用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45259490/