void max_min(int *a, int size, int *max, int *min){
insertion_sort(a, size);
*min = a[0];
*max = a[size-1];
}
这个C函数运行正常。当使用参数时,我感到困惑,
为什么?
答案 0 :(得分:4)
您可以将a[0]
写为*a
,a[size-1]
等同于*(a+(size-1))
。
当作为参数传递给函数时,指针和数组是等价的(但仅在这种情况下)。此下标运算符可用于指针,如 -
a[5] <==> *(a+5)
事实上a[5]
相当于5[a]
(,由rubikonx9 建议)
您可以阅读下标运算符here
答案 1 :(得分:0)
回答你的混淆
*min
表示指针指向的变量。如果您想更改它的值,那么您需要使用*min
(这与正常分配相同)。如果您使用min = a[0]
,则只需将指针min
指向另一个地址(地址的值为a [0])。因此min
指向的原始变量不会被更改。这可能很危险。
数组的名称是指向第一个元素的指针。所以喜欢正常点。
更重要的是,地址&a[0]
和地址a
内的值相等。地址&[0]
中的值为a[0]
,地址a
中的值为*a
。因此,arr[0]
相当于*arr
。
所以a
表示数组,*a
表示数组的值。
希望能帮到你。