困惑于C中的基本功能示例

时间:2017-04-23 19:20:33

标签: c function reference

我刚刚开始使用C,并且正在跟随"The C Programming Language"

在第一章中,我发现了一些对我来说很奇怪的东西(我在JS,Python,C#等高级代码中做了很多工作)。我所指的是这个片段读取输入,分析其长度,然后复制它,如果比以前更长:

#include <stdio.h>

#define MAXLINE 1000

int get_line(char line[], int limit);
void copy(char to[], char from[]);


int main () {

    int len, max;
    char line[MAXLINE], longest[MAXLINE];

    max = 0;

    while((len = get_line(line, MAXLINE)) > 0) { // <-- here
        if (len > max) {
            max = len;
            copy (longest, line);
        }
    }

    if (max > 0) {
        printf("Longest string: %sLength: %d\n", longest, max);
    }

    return 0;
}

int get_line(char line[], int limit) {

    int current, index;

    for (index = 0; index < limit -1 && (current = getchar()) != EOF && current != '\n'; ++index)
        line[index] = current;

    if (current == '\n') {
        line[index] = current;
        ++index;
    }
    line[index] = '\0';
    return index;
}

void copy (char to[], char from[]) {

    int index = 0;

    while ((to[index] = from[index]) != '\0')
        ++index;
}

这个片段中的奇怪之处是函数调用get_linecopy中的参数似乎是引用(即使它们不是指针?)。

例如,linelongestmain中的值与辅助函数中的值相同,即使main缺少任何扫描程序,并且没有任何辅助函数返回字符数组。

0 个答案:

没有答案