我想将现有数组中的元素范围复制到新数组。它将有一个填充了ID的本地整数数组(只是随机数)。它还有一个全局空数组,与本地数组具有相同数量的元素。我的程序包含一个函数,它将本地数组的条目范围复制到全局数组。这个函数将如下:
void func(int *ptr, int first, int last);
ptr指针将用于本地数组的起始地址。 第一个表示复制的开始位置。 最后表示复制结束的位置。顺便说一下,我正在使用代码编辑器并使用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是全局数组,但我无法弄清楚。
最后没有工作,第一次是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) )
答案 0 :(得分:0)
您正在设置p = g_id
。如果要将副本转到匹配位置,则必须在本地和全局阵列上设置匹配的偏移量。
int *src, *dst;
for (src = id + first, dst = g_id + first; src <= id + last; src++, dst++) {
*dst = *src;
}
答案 1 :(得分:0)
要更好地理解它,请使用索引而不是指针:
it will be very helpful for my project
否则:
for (int i = first; i <= last; i++) {
g_id[i] = id[i];
}