Как передать массив в качестве аргумента функции?

Итак, я пытаюсь сделать простую программу на C с использованием массивов.

int odd(int v1[],int n) {
    int v2[n];
    int i;
    for (i=0;i<n;i++) {
        if (v1[i]%2==0) {
            v2[i]=v1[i];
        }
        else {
            v2[i]=v1[i]*2;
        }
    }
    for (i=0;i<n;i++) {
        printf("Array %d",v2[i]);
    }
    return 0;
}

int main() {
    odd({1,2,3,4,5},5);
    return 0;
}

Я получаю сообщение об ошибке в основной функции («Ожидаемое выражение») и не знаю, как ее исправить.


person k3nz0    schedule 22.04.2017    source источник
comment
Вам нужно вызвать odd с массивом. {1,2,3,4,5} не является массивом. Это просто список, не являющийся выражением, и его можно использовать только для инициализации.   -  person Kerrek SB    schedule 22.04.2017


Ответы (1)


Выражение вроде

 {1,2,3,4,5}

это не массив, сам по себе. Это список, заключенный в фигурные скобки, который в основном используется для целей инициализации.

Если вы не хотите определять отдельную переменную массива, вам нужно использовать составной литерал< /а>. Что-то типа

 odd((int[]){1,2,3,4,5},5);

сделает работу.

person Sourav Ghosh    schedule 22.04.2017
comment
Кроме того, мы можем использовать int a[]={1,2,3,4,5}; odd(a, 5); - person EsmaeelE; 26.10.2017