void max_min(int *a, int size, int *max, int *min){
insertion_sort(a, size);
*min = a[0];
*max = a[size-1];
}
此 C 函数工作正常。我只是感到困惑,当使用参数时,
- 您需要使用 *min 将传入参数用作 中的值一些地址。
- 但是当你把 *a 当作一个数组时,你不需要以在该变量之前添加星号。
为什么?
把a[0]
写成*a
,a[size-1]
等同于*(a+(size-1))
。
当作为参数传递给函数时,指针和数组是等效的(但仅在这种情况下(。此下标运算符可用于指针,例如 -
a[5] <==> *(a+5)
事实上,a[5]
等同于5[a]
(如 rubikonx9 所建议的那样(
您可以在此处阅读有关下标运算符的信息
回答你的困惑
-
*min
表示指针指向的变量。如果你想改变它的值,所以你需要使用*min
(这与正常分配相同(。如果使用min = a[0]
,则仅使指针min
指向另一个地址(地址的值为 a[0](。因此,min
指向的源变量不会更改。这可能很危险。 -
数组的名称是指向第一个元素的指针。 所以喜欢正常点。
更重要的是,地址&a[0]
和地址a
中的值是相等的。地址 &[0]
中的值a[0]
,地址a
中的值*a
。因此,arr[0]
等同于*arr
。
所以a
表示数组,*a
表示数组的值。
希望对您有所帮助。