C语言可以缺省对函数说明的情况

课本上说,被调函数的返回值是int型或者char型可以缺省对被调函数的说明。这句话是什么意思,是可以不用在主函数前说明函数吗。

谭浩强的书上这么写的吧。这根本就是错的。是tc等个别编译器的特性,不是c标准。
turbo c编译器之所以允许这种奇葩的语法,和当年pc机的内存很小,性能很低有关(c语言最初是在小型机上用的,而不是pc这种微型电脑)。
当时电脑的内存有多小呢?只有几百KB,即便后来286,也就是1MB 2MB,你没看错,现在的电脑起码16GB,是当年电脑内存的上万倍。
这些东西早就过时了。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7609603
  • 这篇博客也不错, 你可以看下c语言中char、int以及单引号与双引号的一些理解
  • 除此之外, 这篇博客: C语言基本数据类型有哪些?中的 1.声明char类型变量 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • char类型变量的声明方式与其他类型变量的声明方式相同。下面是一些例子:

    char response;
    char itable, latan;

    以上声明创建了3个char类型的变量:response、itable和latan。

  • 以下回答由chatgpt基于相关博客总结生成:

    在C语言中,在主函数前如果要调用其他函数,一般需要在主函数前声明该函数。但是在以下情况下可以省略函数说明:

    1. 被调函数的返回值为int型或char型,且该函数定义在主函数之后。

    因为在执行调用该函数的语句时,编译器已遇到该函数的定义,便可以根据定义自动推断出该函数的函数说明(包括函数名、参数及返回值类型等)。

    1. 头文件中声明的函数无需再次声明。

    因为头文件在使用前已被编译器包含在程序中,其中函数说明已被自动注入程序中。

    如果要调用不在主函数之后的函数,可以在主函数前的一段区域中提前声明该函数,或将该函数定义放置在主函数之前,以避免编译器出错。

    代码示例:

    #include <stdio.h>
    #include <stdlib.h>
    
    // 定义函数add
    int add(int a, int b) {
        return a + b;
    }
    
    // 主函数
    int main() {
        int x = 1, y = 2;
        // 调用add函数
        int sum = add(x, y);
        printf("sum = %d\n", sum);
        // 省略函数add的函数说明,因为add定义在主函数之后
        return 0;
    }
    

    运行结果为:

    sum = 3
    

    又如,在以下代码中,函数HexToInt的函数声明放在了主函数的头文件中,因此在主函数中可以直接调用该函数,无需再次声明。

    #include <stdio.h>
    
    // 在头文件中声明HexToInt函数
    int HexToInt(char *hex, int hexLen, int *pValue);
    
    // 主函数
    int main() {
        char *hex = "F7E5";
        int len = 4;
        int value;
        // 调用HexToInt函数
        HexToInt(hex, len, &value);
        printf("hex %s to int %d\n", hex, value);
        return 0;
    }
    
    // HexToInt函数的具体实现
    int HexToInt(char *hex, int hexLen, int *pValue) {
        // ...
    }