Каким образом аргументы передаются по значению? - 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);