在C中传递和更改函数内部的数组

我有这个简单的C程序,它将函数中的任何数组元素更改为2。 虽然它有效但令我困惑的是,我不应该将数组地址传递给函数,而不是数组本身? 它不是那样工作的……

void function(int *val, int element){ *(val+element) = 2; } int main(int argc, char *argv[]) { int value[2]; value[0] = 10; value[1] = 5; int element = 0; function(value, element); return 0; } 

将数组( val )传递给函数时,它会衰减为指向数组第一个元素的指针。

数组的地址( &val )指向&val完全相同的地址但具有不同的类型 – 具有整个数组大小的类型。

在这里,你需要通过val