是不是刚学 C 语言函数的时候,总觉得这东西比登天还难?定义函数时括号位置总错,调用的时候要么参数传少了,要么传多了,程序一跑就报错,改来改去还是不对。其实啊,函数这玩意儿,新手踩的坑都差不多,今天兔子哥就把这些痛点一个个拆开来讲,再给点实用的入门方法,保准零基础也能看明白。
痛点一:函数定义格式总写错,编译器报错看不懂
刚学函数的朋友,十有八九都在定义格式上栽过跟头。比如写个加法函数,要么忘了写返回值类型,要么把函数名后面的括号丢了,还有的大括号位置不对,编译器一报错,满屏幕的英文看得人直发懵。
其实函数定义就像盖小房子,得有固定的样式:返回值类型 函数名 (参数列表) { 函数体 }。你看啊,比如 int add (int a, int b) { return a + b; },这里的 int 是返回值类型,add 是函数名,括号里的是参数,大括号里的是具体干活的代码。
那报错看不懂咋办?教你个笨办法,先看报错信息里的行号,找到对应的代码行,然后对照正确的格式一点点查。比如报错里有 “syntax error”,十有八九是少了分号或者括号不对。多试几次,慢慢就有感觉了。
痛点二:不知道啥时候该用函数,代码写得乱糟糟
有些朋友写代码,从头到尾全堆在 main 函数里,几百行代码挤在一起,改个小地方都得翻半天。这时候就该用函数了,可他们总纠结:这段代码该不该抽成函数啊?
其实很简单,只要是重复出现的代码,或者能单独干一件事的代码,都可以写成函数。比如程序里多次需要打印菜单,那就写个 print_menu 函数;需要多次计算圆的面积,就写个 circle_area 函数。
兔子哥跟你说,刚开始不用怕函数写多了,哪怕一个函数只干三行代码,只要能让主程序更清楚,就值得写。你想啊,把代码拆成一个个小函数,就像把一堆零件分成不同的盒子装,找起来多方便。
痛点三:参数和返回值搞不清,函数调用结果总不对
这应该是最让人头疼的痛点了。传参数的时候,要么把 int 型传给了 float 型的参数,要么想让函数改外面的变量,结果传了普通参数,忙活半天变量还是老样子。
举个例子,想让函数交换两个整数的值,要是写成 void swap (int a, int b),那调用完变量根本不会变,因为传的是值的副本。这时候得用指针,写成 void swap (int *a, int *b),调用的时候传变量地址才行。
那返回值呢?要是函数定义了返回 int 型,就别返回个字符串;要是函数不用返回值,就得用 void 声明。还有啊,函数里的 return 语句,一旦执行到就会退出函数,后面的代码不会再跑,这点也得注意。
痛点四:函数调用顺序搞错,“未声明” 错误总出现
有时候明明写了函数,调用的时候却报错说 “函数未声明”,这多半是调用顺序出了问题。C 语言编译器是从上往下读代码的,要是在 main 函数里调用了一个还没定义的函数,它就不认识。
解决办法有两个:要么把函数定义写在调用它的函数前面,比如把 add 函数写在 main 前面;要么在调用前声明一下函数,比如在 main 前面加一句 int add (int a, int b); 这样编译器就知道后面有这个函数了。
可能有人会问,声明的时候参数名可以省略吗?可以的,写成 int add (int, int); 也行,但定义的时候必须写全参数名,不然函数体里没法用。
最后兔子哥说点自己的心得。学函数就像学骑自行车,刚开始总摔跤,但摔几次就会了。别害怕犯错,每次错了就记下来,下次避开就行。我刚开始学的时候,函数参数传错类型是常有的事,后来养成了调用前对照函数定义检查的习惯,就很少错了。其实啊,函数是个好东西,用熟了能让代码又清楚又好改,慢慢摸索,你肯定也能掌握。希望这些能帮到你,有啥问题随时找我聊。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~