#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));
}
答案 0 :(得分:5)
不要使用标记(-1
),存储长度。
然后您可以使用memcpy
- 提示:复制sizeof(int)*len
字节。
答案 1 :(得分:0)
我正在尝试一个示例程序来复制整数数组 另一个整数数组。还有另一种方法可以做到更多 有效的方式。
由于这是一个示例程序,我不确定您的真实程序是什么样的。但至于分配一个数组:你可以静态地(如你的例子中)或动态地使用例如数组。 malloc()
。无论哪种方式,数组的大小都是已知的(在源代码中固定或通过malloc调用的size参数间接固定)。
所以是的,因为您应该知道数组的大小,所以您可以使用memcpy()
,因为它的实现针对其运行的体系结构进行了优化,因此效率更高。
BTW:异常可能是为您分配内存的库,但不提供数组的长度。但我从未遇到过这样的情况......