2016-03-19 3 views
0

Что бы этот C-like psuedo-code возвращался для следующего кода. В этом коде предполагается, что параметры для incrementAll используют call-by-value-result. Спасибо за любую помощь.Пример псевдокода вызова по значению-результат

void incrementAll (int val1, int val2, int val3) { 
    val1 += 1; 
    val2 += 1; 
    val3 += 1; 
} 
void main() { 
    int save = 1; 
    int list[] = {1, 2, 3, 4, 5}; 
    incrementAll(save, list[save], list[list[save]]); 
    for (int i=0; i < listLength; i++) { 
      printf("%d ", list[i]); 
    } 
    printf("\n"); 
} 
+0

Я не уверен, что вы хотите задать здесь. если вы говорите о том, что главное вернется, оно ничего не вернет, функция ничего не вернет. вы можете очистить мое замешательство? –

+0

Извините, я обновил main. Теперь основной должен распечатать список –

ответ

0

Использование вызова будет значение результата, то выход будет 13445, как и в вызове по результату значения, первое значение массива будут скопированы в локальных переменных, в конце вызова функции, то измененное значение копируется обратно в исходные параметры. Но это не особенность C.

+0

, это должен быть гипотетический нелиберальный C-код. Я говорю, что мы предполагаем, что incrementAll является результатом вызова по значению. Извините за то, что вы не поняли этого. –

+0

@ DanielKobe Если это гипотетический код C, код по-прежнему будет возвращать 12345, если он является вызовом по значению, если только я не могу задать вопрос, извините –

+0

Нет его вызова не по значению, его вызов по значению, результат –

Смежные вопросы