一个函数,它使用指针等于两个数组

Ash*_*eyT 1 c pointers

我必须编写一个函数来执行下面的内容,但是使用指针(所以我必须删除"i"和operator [])...所以初始声明会是这样的 void match (int *a, int *a, int n),但是我怎么能处理不使用"i"增加?谢谢 :)

void match (int a[], int b[], int n) {
int i;
for (i = 0; i < n; i++)
a[i] = b[i];
}
Run Code Online (Sandbox Code Playgroud)

unw*_*ind 6

这在C中称为"分配".

而且它更容易处理memcpy(),这是复制内存块的标准方法:

memcpy(a, b, n * sizeof *a);
Run Code Online (Sandbox Code Playgroud)

如果做不到这一点,您当然可以使用指针算法,或者接受指针,但在函数本身中使用数组表示法:

void assign(int *a, const int *b, int n)
{
  int i;

  for(i = 0; i < n; ++i)
    a[i] = b[i];
}
Run Code Online (Sandbox Code Playgroud)

注意源指针如何b标记为const,表示它是一个只读参数.

使用指针算术,它是这样的:

void assign(int *a, const int *b, int n)
{
  const int *end = b + n;
  while(b < end)
   *a++ = *b++;
}
Run Code Online (Sandbox Code Playgroud)