刚接触 C 语言函数的时候,是不是觉得这东西特抽象?我当初对着课本上的函数定义看了半天,脑子里全是问号 —— 为啥要声明啊?返回值到底有啥用?参数传递来传递去的,怎么就变了呢?后来逼着自己拆了 30 个实例代码,一个个跑起来看效果,才慢慢摸着点门道。今天就把这些经验分享出来,从最简单的声明开始,到返回值怎么用,带着你一步步吃透函数的核心用法,希望能帮到跟我当初一样迷糊的朋友。
函数这东西,说白了就是给一段代码起个名字,想用的时候喊它一声就行。比如你经常要算两个数的和,总不能每次都写一遍 a + b 吧?做成函数,下次直接写 add (3,5),多省事。有个网友说,“没学函数之前,写个计算器程序抄了十遍加减乘除的代码,改的时候差点疯了”,可不是嘛,这就是函数最实在的用处 —— 省事儿,还不容易出错。
先说说函数声明,这步好多新手容易忽略。声明就像给函数发个 “预告”,告诉编译器 “后面有个叫 xxx 的函数,长啥样”。格式一般是 “返回值类型 函数名 (参数类型);”,比如 “int add (int, int);”。为啥要声明呢?如果你把函数写在 main 函数后面,不声明的话,编译器读到 main 里的调用代码时,根本不知道有这么个函数,直接就报错了。我当初第一次写自定义函数就栽在这,以为写了函数就能用,结果编译时一堆红色错误,后来加了声明才好。
然后是函数定义,这才是函数的真身。格式比声明多了函数体,比如 “int add (int a, int b) { return a + b; }”。这里面的 a 和 b 叫形参,就像个占位符,等调用的时候才会填上具体的数。有朋友问,形参名能不能随便起?其实只要符合命名规则就行,叫 x、y 也行,叫 num1、num2 也行,主要是自己看得懂。
调用函数就更简单了,直接写函数名加参数,比如 “sum = add (2, 3);”。这里的 2 和 3 叫实参,会传给形参 a 和 b。不过得注意,实参和形参的类型、数量得对上,不然算出来的结果可能乱七八糟。有个初学者分享说,“想算 1.5 加 2.5,结果用了 int 型参数,出来个 3,纳闷了半天”,这就是类型没对上的问题。
返回值这块,新手也容易犯迷糊。函数里的 return 语句,就是把计算结果 “送出去”。如果函数声明的是 int 型,return 后面就得跟个整数;要是 void 型,就不用 return(或者只写 return;)。我当初写过一个求面积的函数,明明该返回 float 型,却写成了 int,结果算出来的圆面积总少个小数部分,查了半天才发现是返回值类型错了。
给大家举几个实例类型,你可以照着练:
基础型:比如 “void printStar () { printf ("***"); }”,这是无参无返回值的,调用就打印星星,适合新手入门。
计算型:像 “int max (int x, int y) { return x > y ? x : y; }”,求两个数的最大值,带参数有返回值,很经典。
实用型:比如 “int isPrime (int n)”,判断一个数是不是素数,这种函数在很多编程题里都能用得上。有个同学用这个函数做了个素数计算器,还在作业里拿了优呢。
数组操作型:比如 “void sort (int arr [], int n)”,给数组排序,这种函数能处理批量数据,学会了特别有用。
其实函数的核心用法就藏在这些实例里,你不用一下子学 30 个,每天吃透一两个,慢慢就有感觉了。我当初就是把这些实例分类整理,先练无参的,再练带参的,最后挑战带数组和指针的,一个月下来,写函数就顺多了。
最后想说,学函数别害怕犯错,编译器报错是好事,能帮你找到问题。比如参数不匹配、返回值类型不对,这些错多犯几次就记住了。关键是多动手敲代码,看着实例写一遍,再自己改改参数试试,比光看书管用十倍。希望这些能帮到你,慢慢学,函数其实没那么难。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~