使用指针创建函数(对编码非常陌生)
Create function using pointers (very new to coding)
我书里的问题是:
函数:
void int_concat (int * i1, const int * i2, unsigned int n, unsigned int pos);
将一个字段与 i2 中的 n 个整数连接到字段 i1 中的位置“pos”。
使用指针实现 int_concat 函数,您不能使用索引。您的
解决方案也不得使用任何标准函数。
一个答案是:
void int_concat (int *i1, const int *i2, unsigned int n, unsigned int pos)
{
int *insert = i1 + pos;
while ( n-- )
{
*insert++ = *i2++;
}
}
我好像不能理解他们了*insert++ = *i2++;
。
我认为我唯一理解的是 int *insert = i1 + pos;
创建放置 n 个整数的地址。谁能解释一下..
下面是代码的工作原理!
正如你所说,int *insert = i1 + pos;
是数组 i1 中的地址,其中数字将从 i2 添加。
暂时,它会简单地循环直到 n = 0,他们的写法等同于:
while(n>0)
{
n-=1;
//Do smth
}
现在为实际
*insert++ = *i2++;
所以这里发生的是你引用位置 insert 的值,并使它等于 i2。之后你增加两个指针,因此这一行可以写成:
*insert = *i2;
insert++;
i2++;
下面是完整的代码,写的比较全面
void int_concat(int *i1, const int *i2, unsigned int n, unsigned int pos)
{
// This is the fixed position
int *insert = i1 + pos;
while(n>0)
{
n-=1;
*insert = *i2;
insert++;
i2++;
}
}
现在,如果您还在苦苦挣扎,让我做一个示例应用程序:
这里说的是i1 = [1,2,3]
这里是 i2 = [4,5,6]
假设pos为1,n=2;
因此代码会将 i1 更改为:[1,4,5] 因为 i2 中的值 a pos = 1 等于 4。但是由于 n = 2它将增加 insert 和 i2 的位置,因此值 5 将放在 i1.
中
我书里的问题是: 函数:
void int_concat (int * i1, const int * i2, unsigned int n, unsigned int pos);
将一个字段与 i2 中的 n 个整数连接到字段 i1 中的位置“pos”。 使用指针实现 int_concat 函数,您不能使用索引。您的 解决方案也不得使用任何标准函数。
一个答案是:
void int_concat (int *i1, const int *i2, unsigned int n, unsigned int pos)
{
int *insert = i1 + pos;
while ( n-- )
{
*insert++ = *i2++;
}
}
我好像不能理解他们了*insert++ = *i2++;
。
我认为我唯一理解的是 int *insert = i1 + pos;
创建放置 n 个整数的地址。谁能解释一下..
下面是代码的工作原理!
正如你所说,int *insert = i1 + pos;
是数组 i1 中的地址,其中数字将从 i2 添加。
暂时,它会简单地循环直到 n = 0,他们的写法等同于:
while(n>0)
{
n-=1;
//Do smth
}
现在为实际
*insert++ = *i2++;
所以这里发生的是你引用位置 insert 的值,并使它等于 i2。之后你增加两个指针,因此这一行可以写成:
*insert = *i2;
insert++;
i2++;
下面是完整的代码,写的比较全面
void int_concat(int *i1, const int *i2, unsigned int n, unsigned int pos)
{
// This is the fixed position
int *insert = i1 + pos;
while(n>0)
{
n-=1;
*insert = *i2;
insert++;
i2++;
}
}
现在,如果您还在苦苦挣扎,让我做一个示例应用程序:
这里说的是i1 = [1,2,3]
这里是 i2 = [4,5,6]
假设pos为1,n=2;
因此代码会将 i1 更改为:[1,4,5] 因为 i2 中的值 a pos = 1 等于 4。但是由于 n = 2它将增加 insert 和 i2 的位置,因此值 5 将放在 i1.
中