C语言将一个数组的元素范围复制到另一个数组
copy range of elements from an array to another array in C language
我想将元素范围从现有数组复制到新数组。它将有一个本地整数数组,其中填充了一个 ID(只是随机数)。它还具有一个全局空数组,该数组具有与本地数组相同数量的元素。我的程序包含一个函数,它将本地数组的条目范围复制到全局数组。这个函数将是:
void func(int *ptr, int first, int last);
ptr 指针将用作本地数组的起始地址。 first 表示复制开始的位置。 last表示复制结束的地方。顺便说一句,我正在使用代码编写器并使用 MSP430。这是我的代码,
#include <msp430.h>
int g_id[11];
int *ptr;
int *p;
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
int id[11]={5,0,1,8,3,5,1,4,0,9,1};
int first = 3;
int last= 8;
ptr = id;
p = g_id;
for(ptr=&id[first]; *ptr < &id[last]; ptr++)
{
*p = *ptr;
p++;
}
while(1);
}
g_id 是全局数组,但我想不通。
last 不起作用,first 是 3,程序跳转到 3 个值并从 8 开始。
(8,3,5,1,4,0,9,1,0,0,0) 但我想看 (0,0,0,8,3,5,1,4,0,0,0 )
您正在设置 p = g_id
。如果您希望副本转到匹配的位置,则必须在本地和全局数组上设置匹配的偏移量。
int *src, *dst;
for (src = id + first, dst = g_id + first; src <= id + last; src++, dst++) {
*dst = *src;
}
为了更好地理解它,使用索引而不是指针:
for (int i = first; i <= last; i++) {
g_id[i] = id[i];
}
否则:
for (p = &g_id[first], ptr = &id[first]; ptr <= &id[last]; ptr++, p++) {
*p = *ptr;
}
我想将元素范围从现有数组复制到新数组。它将有一个本地整数数组,其中填充了一个 ID(只是随机数)。它还具有一个全局空数组,该数组具有与本地数组相同数量的元素。我的程序包含一个函数,它将本地数组的条目范围复制到全局数组。这个函数将是:
void func(int *ptr, int first, int last);
ptr 指针将用作本地数组的起始地址。 first 表示复制开始的位置。 last表示复制结束的地方。顺便说一句,我正在使用代码编写器并使用 MSP430。这是我的代码,
#include <msp430.h>
int g_id[11];
int *ptr;
int *p;
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
int id[11]={5,0,1,8,3,5,1,4,0,9,1};
int first = 3;
int last= 8;
ptr = id;
p = g_id;
for(ptr=&id[first]; *ptr < &id[last]; ptr++)
{
*p = *ptr;
p++;
}
while(1);
}
g_id 是全局数组,但我想不通。
last 不起作用,first 是 3,程序跳转到 3 个值并从 8 开始。 (8,3,5,1,4,0,9,1,0,0,0) 但我想看 (0,0,0,8,3,5,1,4,0,0,0 )
您正在设置 p = g_id
。如果您希望副本转到匹配的位置,则必须在本地和全局数组上设置匹配的偏移量。
int *src, *dst;
for (src = id + first, dst = g_id + first; src <= id + last; src++, dst++) {
*dst = *src;
}
为了更好地理解它,使用索引而不是指针:
for (int i = first; i <= last; i++) {
g_id[i] = id[i];
}
否则:
for (p = &g_id[first], ptr = &id[first]; ptr <= &id[last]; ptr++, p++) {
*p = *ptr;
}