You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中int foo(a) int a; { return a }这类函数定义是什么含义?

问题解答

检索关键词

你可以使用 K&R C 函数定义、C 旧式函数定义 作为关键词检索相关内容。

写法含义说明

这种语法是C语言早期K&R标准阶段使用的函数定义格式,属于已废弃的过时特性,目前C新标准仅为了兼容老旧代码保留对该语法的支持,不推荐在新代码中使用。

你给出的代码:

int g(a,b,c,d) int a,b,c,d; { return 2; }

和现代ANSI C(C89及以后标准)的如下写法完全等价:

int g(int a, int b, int c, int d) {
    return 2;
}

K&R风格函数定义的核心特点:

  • 函数名后的括号内仅填写参数名称,不标注参数类型
  • 所有参数的类型声明统一放在参数列表闭括号和函数体大括号之间
  • 未显式声明类型的参数会被默认推导为int类型

示例代码行为解释

你给出的示例中int g();的声明属于无参数原型声明,C标准规定该声明表示g函数的参数数量、类型均未知,编译器在处理g(2)调用时不会做参数数量、类型的校验,也无法做正确的隐式类型转换,因此当调用时传入的参数和实际定义的参数不匹配时,就会触发未定义行为。

内容的提问来源于stack exchange,提问作者Kaiyakha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:15:07