我有这个简单的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;
}
答案 0 :(得分:3)
将数组(val
)传递给函数时,它会衰减为指向数组第一个元素的指针。
数组的地址(&val
)指向与val
完全相同的地址,但具有不同的类型 - 具有整个数组大小的类型。
在此,您只需要传递val
。