我必须编写一个函数来执行下面的内容,但是使用指针(所以我必须删除"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)
这在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)