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

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

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

вобщем вот пример из книги кернигана и ритчи.. насколько я знаю все что происходит внутри функции это есть локально и временно.. тогда как из функции getline() помимо значения которая функция отдает через return, просачиваются еще и битком набитый инфой массивы.. они ж не должны в теории.. все должно было остаться в вункции..
#include <stdio.h>
#include <stdlib.h>
 
#define MAXLINE 1000
 
int getline(char line[], int lim);
void copy(char to[], char from[]);
 
/*печать самой длинной строки*/
int main()
{
    int len; /*длинна текущей строки*/
    int max = 0; /*длинна максимальной из просмотренных строк*/
    char line[MAXLINE]; /*сама строка*/
    char longest[MAXLINE]; /*самая длинная строка из введенных*/
 
    while((len = getline(line, MAXLINE)) > 0)
        if(len > max){
            max = len;
            copy(longest, line);
        }
    if(max > 0) /*была ли хоть одна строка?*/
        printf("%s", longest);
    return 0;
}
 
/*чтение строки в s, возврат длины*/
int getline(char s[], int lim){
    int c, i;
    for(i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)
        s[i] = c;
    if(c == '\n'){
        s[i] = c;
        ++i;
    }
    s[i] = '\0';
    return i;
}
 
/*копирует из 'from' в 'to'; to достаточно большой*/
void copy(char to[], char from[]){
    int i = 0;
    while((to[i] = from[i]) != '\0')
        ++i;
}
и почему массивы могут удирать из функции невредимыми а обычные переменные нет?.. в примере ниже этот прикол не прокатывает..
#include <stdio.h>
#include <stdlib.h>
 
int abc(int, int);
 
int main()
{
    int a = 1;
    int b = 2;
    int c = 0;
    printf("%d, %d, %d\n", a, b, c);
    c = abc(a, b);
    printf("%d, %d, %d\n", a, b, c);
    return 0;
}
 
int abc(int aq, int bq){
    int x = aq + bq;
    aq = 9;
    bq = 9;
    return x;
}
помогите, а?..

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

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

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

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

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


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

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

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