c - 使用指针等于两个数组的函数

标签 c pointers

我必须编写一个函数来完成您在下面阅读的内容,但是使用指针(所以我必须删除“i”和运算符 [])...所以初始声明类似于 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];
}

最佳答案

这在 C 语言中称为“赋值”。

而且用 memcpy() 做起来更容易,这是复制内存块的标准方法:

memcpy(a, b, n * sizeof *a);

否则,您当然可以使用指针算法,或者接受指针但在函数本身中使用数组表示法:

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

  for(i = 0; i < n; ++i)
    a[i] = b[i];
}

请注意源指针 b 是如何标记为 const 的,以表明它是一个只读参数。

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

void assign(int *a, const int *b, int n)
{
  const int *end = b + n;
  while(b < end)
   *a++ = *b++;
}

关于c - 使用指针等于两个数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237814/

相关文章:

c - 有符号/无符号整数

c - 为什么这个对象在函数调用后没有被设置为 NULL?

c - 'const char *' 类型的变量不能分配给 'char' 类型的实体

c++ - 静态成员变量的构造函数和析构函数(指针)

c++ - 成员指针指向的函数类型

c - Git - 获取用于日志的代码/版本标识符

c - 括号之间的这个指针是什么意思?

c - 在函数中初始化数组

c - 使用指针取消引用生成的模糊输出?

c - 枚举类型的表示和对齐要求