Прокомментировать код - C (СИ) (74867)

Узнай цену своей работы

Формулировка задачи:

вобщем вот пример из книги кернигана и ритчи.. насколько я знаю все что происходит внутри функции это есть локально и временно.. тогда как из функции getline() помимо значения которая функция отдает через return, просачиваются еще и битком набитый инфой массивы.. они ж не должны в теории.. все должно было остаться в вункции..
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAXLINE 1000
  4. int getline(char line[], int lim);
  5. void copy(char to[], char from[]);
  6. /*печать самой длинной строки*/
  7. int main()
  8. {
  9. int len; /*длинна текущей строки*/
  10. int max = 0; /*длинна максимальной из просмотренных строк*/
  11. char line[MAXLINE]; /*сама строка*/
  12. char longest[MAXLINE]; /*самая длинная строка из введенных*/
  13. while((len = getline(line, MAXLINE)) > 0)
  14. if(len > max){
  15. max = len;
  16. copy(longest, line);
  17. }
  18. if(max > 0) /*была ли хоть одна строка?*/
  19. printf("%s", longest);
  20. return 0;
  21. }
  22. /*чтение строки в s, возврат длины*/
  23. int getline(char s[], int lim){
  24. int c, i;
  25. for(i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)
  26. s[i] = c;
  27. if(c == '\n'){
  28. s[i] = c;
  29. ++i;
  30. }
  31. s[i] = '\0';
  32. return i;
  33. }
  34. /*копирует из 'from' в 'to'; to достаточно большой*/
  35. void copy(char to[], char from[]){
  36. int i = 0;
  37. while((to[i] = from[i]) != '\0')
  38. ++i;
  39. }
и почему массивы могут удирать из функции невредимыми а обычные переменные нет?.. в примере ниже этот прикол не прокатывает..
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int abc(int, int);
  4. int main()
  5. {
  6. int a = 1;
  7. int b = 2;
  8. int c = 0;
  9. printf("%d, %d, %d\n", a, b, c);
  10. c = abc(a, b);
  11. printf("%d, %d, %d\n", a, b, c);
  12. return 0;
  13. }
  14. int abc(int aq, int bq){
  15. int x = aq + bq;
  16. aq = 9;
  17. bq = 9;
  18. return x;
  19. }
помогите, а?..

Решение задачи: «Прокомментировать код»

textual
Листинг программы
  1. int sum(int, int);

Объяснение кода листинга программы

  1. В коде определен прототип функции с именем sum, которая принимает два целочисленных аргумента.
  2. После прототипа функции нет тела, поэтому можно предположить, что функция определена в другом месте.
  3. В коде нет других элементов, которые можно было бы прокомментировать.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут