我是 C 编程的新手,想知道是否有一种方法可以防止更改数组的值。
我有一个数组:
int *array = makeArray();
然后我对这个数组应用排序方法:
sortingMethod1(array);
当我打电话时:
sortingMethod2(array);
列表已经排序,我无法对第二种排序方法进行基准测试。
我想知道是否有一种方法可以将同一个数组传递给两个函数,而无需为下一个函数对其进行排序。
如果有人能帮助我解决这个看似非常简单的问题,我将不胜感激。
最佳答案
如果排序方法就地对数组进行排序,您将需要向它们发送数组的副本。为避免代码重复,最好将复制提取到实用函数中:
void benchmark(int *array, size_t array_len, void (*method)(int *)) {
int *array_copy = malloc(array_len * sizeof(int));
memcpy(array_copy, array, array_len * sizeof(int));
/* you can initialize a timer here */
method(array_copy);
/* you can output elapsed time here */
free(array_copy);
}
// ...
int *array = makeArray();
benchmark(array, array_len, sortingMethod1);
benchmark(array, array_len, sortingMethod2);
关于C - 如何在排序时不更改 int 数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899902/