复制整数数组的最佳方法是什么?我知道memcpy()
是一种方法。有没有像strdup()
这样的功能?如何将一个整数数组复制到另一个整数数组
15
A
回答
23
没有,并且strdup
也不在标准中。你当然可以只写自己:
int * intdup(int const * src, size_t len)
{
int * p = malloc(len * sizeof(int));
memcpy(p, src, len * sizeof(int));
return p;
}
0
这可能是工作,如果使用得当:
#define arrayDup(DST,SRC,LEN) \
{ size_t TMPSZ = sizeof(*(SRC)) * (LEN); \
if (((DST) = malloc(TMPSZ)) != NULL) \
memcpy((DST), (SRC), TMPSZ); }
然后,你可以这样做:
double dsrc[4] = { 1.1, 2.2, 3.3, 4.4 };
int *isrc = malloc(3*sizeof(int));
char *cdest;
int *idest;
double *ddest;
isrc[0] = 2; isrc[1] = 4; isrc[2] = 6;
arrayDup(cdest,"Hello",6); /* duplicate a string literal */
arrayDup(idest,isrc,3); /* duplicate a malloc'ed array */
arrayDup(ddest,dsrc,4); /* duplicate a regular array */
的告诫是:
SRC
和DST
个宏参数进行评估多于一次- 指针/阵列的作为
SRC
传递的类型必须与源阵列的(无void *
除非转换为正确的类型)
在另一方面,它作品源数组是否为malloc()
ed或不是,以及任何类型。
相关问题
- 1. BPEL:将整数数组复制到另一个整数数组
- 2. 将字符串数组复制到一个整数数组?
- 3. 如何将一个整数分解为一个整数数组
- 4. 数组复制到另一个数组
- 5. 如何将一个数组中的数字复制到另一个数组
- 6. 如何将对象数组复制到另一个数组?
- 7. 如何将非重复值从一个数组复制到另一个数组?
- 8. 如何将一个数组中的副本复制到另一个数组中?
- 9. 如何将一个数组操作“复制”到另一个数组?
- 10. 如何循环一个整数数组,并将正数和负数保存到另一个数组中?
- 11. Interlocked.Increment一个整数数组
- 12. 在一个整数数组
- 13. 如何将一个大整数除以另一个大整数?
- 14. 如何使用另一个数组反转一个数组中的整数?
- 15. 如何使用Groovy将一个字符串数组中的子集复制到一个整数数组中?
- 16. 将数组复制到另一个数组
- 17. 将数组复制到另一个类的数组变量
- 18. 使用java将对象数组复制到另一个数组
- 19. 哪些整数从一组整数到XOR来制作一个目标整数?
- 20. 如何确保一个整数整除另一个整数
- 21. 如何将JavaScript函数返回的数组复制到另一个数组中?
- 22. 检查一个数组是否是另一个数组的一个整数
- 23. 将整数分成一个数组
- 24. matlab将数据从一个数组重复数据到另一个数组
- 25. Ç - 如何插入一个整数值到一个数组
- 26. 转换数组到一个整数
- 27. 动态数组:需要帮助将一个数组复制到另一个
- 28. 复制数组值到另一个
- 29. 如果一个整数等于数组中的整数之一?
- 30. 如何将多个整数赋值给另一个整数?
一个简单的'for'循环? – Shahbaz
'strdup'依赖于一个null结束符,它是int数组不具有的。 'memcpy'有什么问题? –
雅会做。我想知道是否可以像使用strdup()的字符串一样执行此操作。 – FourOfAKind