c++ - 用数组或指针引用函数?

标签 c++ arrays pointers

我有两个函数,一个是数组函数,另一个是指针参数。他们返回相同的结果,但我不知道哪个更好用。

#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/

相关文章:

javascript - 从 JavaScript 访问 Linux 诊断信息

javascript - 动态生成集成参数的函数数组?

c# - 如何从 C# 中的简单数组中获取元素?

C++如何在获取其索引位置后获取子字符串

c++ - OpenCL 计数器变量

php - 如何获取子网中的每个IP地址?

C++数组查询

c - 错误 : invalid type argument of unary '*' (have 'int' )

无法增加取消引用的指针的值

c++ - boost asio 绑定(bind) : bad file descriptor