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

C语言中主函数与计算函数不同变量名的参数值传递原理

C语言函数值传递的匹配逻辑

在C语言里,函数调用时的参数传递完全是按位置顺序匹配,和变量名称没有任何关系。

  • 当你在主函数里调用calculate(bill_amount, tax_percent, tip_percent)时,编译器只会关注参数的顺序:

    1. 第一个实参bill_amount的值,会被拷贝到calculate函数的第一个形参bill中;
    2. 第二个实参tax_percent的值,拷贝到第二个形参tax中;
    3. 第三个实参tip_percent的值,拷贝到第三个形参tip中。
  • 形参(calculate里的bill、tax、tip)本质是函数内部的局部变量,只是在函数调用时,会用对应位置实参的值来初始化它们。不管实参和形参的名字是否一致,只要位置对应、类型兼容,值就会被正确传递。

举个直观的代码例子:

#include <stdio.h>

float calculate(float bill, float tax, float tip) {
    return bill * (1 + tax/100) * (1 + tip/100);
}

int main() {
    float bill_amount = 100.0f;
    float tax_percent = 8.0f;
    float tip_percent = 15.0f;
    
    float total = calculate(bill_amount, tax_percent, tip_percent);
    printf("Total: %.2f\n", total);
    return 0;
}

这里main里的变量名和calculate的形参名完全不同,但调用时编译器只按位置一一对应赋值,所以bill_amount的100.0会传给bill,tax_percent的8.0传给tax,以此类推。

  • 额外提醒:如果参数位置写错(比如把tip_percent放到第二个位置),tax形参拿到的就会是小费比例的值,程序结果必然出错——这也侧面证明了传递是按位置实现的,和变量名无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:22:02