我必须编写一个函数来完成您在下面阅读的内容,但是使用指针(所以我必须删除“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/