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

时间:2014-03-15 20:35:09

标签: c arrays function pointers

我有这个简单的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;
}

1 个答案:

答案 0 :(得分:3)

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

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

在此,您只需要传递val