Каким образом аргументы передаются по значению? - C (СИ)
Формулировка задачи:
Всем доброго суток.
Решил познать язык С. Взял для начала книжку Кернигана-Ритчи. Дошел до раздела "Аргументы: передача по значению" (раздел 1.8). Читаю вот такой текст: "В языке С все аргументы передаются "по значению". Это означает, что вызываемая функция получает значения своих аргументов в виде временных переменных, а не оригиналов <..> в С вызываемая фунция не может модифицировать переменные в вызывающей функции: она вправе изменять только свои локальные переменные, временные копии этих переменных".
Вопрос в следующем: почему тогда работает программа из раздела 1.9? В разделе 1.9 присутствует функция int getline(char line[], int len), которой передают строку char line[], фунция ее радостно изменяет и выдает измененной. Как это коррелирует с предыдущим утверждением? Или я что-то упускаю? Подскажите новичку, пожалуйста =))
Куски текста на всякий случае ниже:
int getline(char line[], int maxline); main() { char line[MAXLINE]; <...> while ((len = getline(line, MAXLINE))>0) <...> } int getline(char s[], int lim) { int c, i; for(i=0; i< lim-1 && (c=getchat())!=EOF; i++) s[i]=c; return i; }
Решение задачи: «Каким образом аргументы передаются по значению?»
textual
Листинг программы
int getline(char *line, int len);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д