2025-11-18 03:59:39
先说个简单例子吧。比如写个求平方的函数,主函数里写个main函数,然后调用say_sq函数。就像你打电话给朋友,先说"喂,你帮我算个数",朋友接了才能算。调用函数的时候要告诉它"3"这个数,等它算完3乘3等于9,再告诉主函数结果。主函数就像个中间人,负责把数字传过去,等结果回来再显示。
为啥这么调用呢?因为C语言用栈来存东西。当主函数调用say_sq时,编译器自动在栈里压入两个数据:一个是say_sq的地址(相当于电话号码),另一个是3这个参数(相当于要算的数)。这时候CPU就会跳转到say_sq的地址执行,算完33=9后,会把结果压回栈里。主函数接着从栈里弹出这个结果,就像挂断电话时听到对方说的9。根据《C标准规范》第6.5.5条,函数调用时参数是按值传递的,每个参数占用4字节栈空间(32位系统),所以3这个整数占4字节。整个过程就像快递寄东西,先放地址和包裹,再派送包裹,取回包裹。
本题链接: