我是C编程的新手,想知道是否有办法防止更改数组的值.
我有一个数组:
int *array = makeArray();
Run Code Online (Sandbox Code Playgroud)
然后我对这个数组应用一个排序方法:
sortingMethod1(array);
Run Code Online (Sandbox Code Playgroud)
我打电话的时候:
sortingMethod2(array);
Run Code Online (Sandbox Code Playgroud)
该列表已经排序,我无法对第二种排序方法进行基准测试.
我想知道是否有一种方法可以将相同的数组传递给两个函数,而无需为下一个函数排序.
如果有人能帮我解决一个非常简单的问题,我会很感激.
如果排序方法就地对数组进行排序,则需要向它们发送数组的副本.为避免代码重复,最好将复制提取到实用程序函数中:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |