使用C语言

时间:2017-03-02 16:08:37

标签: c arrays pointers code-composer

我想将现有数组中的元素范围复制到新数组。它将有一个填充了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) )

2 个答案:

答案 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];
}