Передать и изменить массив внутри функции в 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;
}

person user3424140    schedule 15.03.2014    source источник


Ответы (1)


Когда вы передаете массив (val) в функцию, он превращается в указатель на первый элемент массива.

Адрес массива (&val) указывает на тот же адрес, что и val, но имеет другой тип — тип, который имеет размер всего массива.

Здесь вам необходимо пройти всего val.

person Arjun Sreedharan    schedule 15.03.2014