我刚刚解决了一个C任务,现在想知道是否有一个快速的方法可以在转换数据类型的同时复制一个数组。具体来说,我有一个整数值数组,想把它复制到一个新的长整型数组中。函数memcpy只复制字节,而不考虑数据类型。我现在用一个循环解决了这个问题,想知道是否有一个更快的方法。
void myfunction(int arr_count, int* arr) {
long long int arr_max[arr_count];
long long int arr_min[arr_count];
for(int j = 0;j < arr_count; j++){
arr_max[j] = (long long int) *arr;
arr_min[j] = (long long int) *arr;
}
}
1条答案
按热度按时间dw1jzc5e1#
memcpy
假设源和目标具有兼容的类型,所以它在这里不起作用。我不太清楚为什么您希望在运行时动态地更改类型-使用最合适的类型开始更明智。话虽如此,这里的代码按照您的要求执行(除了它应该自然地表示为
arr[j]
),尽管严格地说,类型转换是不必要的,因为整数将在赋值过程中转换为左操作数的类型。如果不考虑特定的系统和用例,你就无法真正地进一步优化代码,尽管如前所述,最好的优化是选择正确的类型开始,然后不要复制任何东西。