将整数数组复制到另一个整数数组

时间:2013-07-11 07:26:42

标签: c

#include<stdio.h>

void int_copy(int* ptrA,int* ptrB,int nbr){
 //int* temp = ptrB;
 while(nbr != 0){
  *ptrB++ = *ptrA++;
  nbr--;
 }
 *ptrB = -1;
 //ptrB = temp;
}

int main(){
 int stringa[40] = {100,101,102,103,104,105,106,107,108,109,110,-1};
 int stringb[40] = {0};
 int *ptr;
 int *ptr1;
 int len = 0;

 ptr = stringa;
 ptr1 = stringb;

 while(*ptr != -1){
  *ptr++;len++;
 }

 printf("\n len : %d \n",len);

 int_copy(stringa,stringb,len);

 while(*ptr1 != -1){
  printf("%d\t",*ptr1);
  *ptr1++;
 }

 return 0;
}

我正在尝试一个示例程序将整数数组复制到另一个整数数组。还有另一种方法可以更有效地完成它。

已编辑:

void int_copy(int* ptrA,int* ptrB,int nbr){
 memcpy(ptrA,ptrB,(sizeof(int)*nbr));
}

2 个答案:

答案 0 :(得分:5)

不要使用标记(-1),存储长度。

然后您可以使用memcpy - 提示:复制sizeof(int)*len字节。

答案 1 :(得分:0)

  

我正在尝试一个示例程序来复制整数数组   另一个整数数组。还有另一种方法可以做到更多   有效的方式。

由于这是一个示例程序,我不确定您的真实程序是什么样的。但至于分配一个数组:你可以静态地(如你的例子中)或动态地使用例如数组。 malloc()。无论哪种方式,数组的大小都是已知的(在源代码中固定或通过malloc调用的size参数间接固定)。

所以是的,因为您应该知道数组的大小,所以您可以使用memcpy(),因为它的实现针对其运行的体系结构进行了优化,因此效率更高。

BTW:异常可能是为您分配内存的库,但不提供数组的长度。但我从未遇到过这样的情况......