【C 学习】12.1-函数基础
“知道做不到就是不知道”
一、初见函数
函数格式:
#include <stdio.h>// 函数声明(可放在文件开头或头文件中)
//告诉编译器函数的接口信息(返回类型、名称、参数类型),通常放在源文件开头或头文件(.h)中。参数名可省略,例如 int add(int, int);
int add(int a, int b);int main() {int x = 5, y = 3;// 函数调用int result = add(x, y);printf("结果是:%d\n", result);return 0;
}// 函数定义,提供函数的具体实现(即函数体)
int add(int a, int b) {int sum = a + b;return sum; // 返回计算结果
}
1. 应用场景:代码语句目的很单一,并且操作语句比较复杂,复用程度高,就会用到函数语句。
2. “代码复制”是程序质量不良的表现,因为如果要做修改,工程量将会很大。将具有同样作用的语句换成“函数”,这样每次需要使用的时候就会更方便——直接在调用函数时传递不同参数。
3. 函数在定义的时候,形参里面如果有数组,不需要考虑数组的大小,内存里面只占有数组中首个元素的地址。所以函数参数传为数组时,实际传递的是地址,而不是值。
为了避免长度未知带来的错误,可以在参数括号里面再加上int n,用这种形式在后面的循环中控制数组的大小。
4.在定义函数时如果含有二维数组,可以省略行数,但是一定要保留第二个长度(列数)。
即int a[][10]
Tips:
(1)用于计数、结束循环等等的变量(i),在操作的时候,最好用另外一个变量(k)接收它的值之后,用另外一个变量来进行之后的操作,否则,变量i会失去它原本用来计数或者结束的作用。
(2)C语言中,函数参数默认是值传递。这意味着函数内部接收到的是实参值的一个副本,在函数内修改形参不会影响原始实参的值。若需修改实参,需传递指针。
二、从函数中返回
1. 单一出口:它的作用优于break,在最后结束函数的同时还会返回一个值。
int func(int){//codereturn int/表达式;
}int a
int b = func(a);
int c = func(func(b));//还有比如最常见的主函数
int main(){//codereturn 0;
}
2. 返回的结果要赋值给一个变量,并且被赋值的这个变量同样可以参与各种运算;
3. 函数的返回值可以再传递给其他函数,甚至可以丢弃(就是没有用变量来接受,因为在代码中用到函数不一定就是要那个返回值,也有可能是利用返回值的其他作用)。
4. 在函数里面最好就只用一个return出口,符合单一出口原则。
5. 对于没有返回值的函数:
a) 函数形式改为“void 函数名(参数表)”;
b) 不能使用呆滞的return;
c) 可以没有return;
d) 调用的时候不能做返回值的赋值。
三、函数的定义和调用
1. 函数:函数是一块代码,接受零个或者多个参数,做一件事情,并返回零个或一个值。
2. 调用函数:函数名(参数值)。
(1)即使没有参数也一定要带有“()”;
(2)如果是有参数的,则需要按照函数定义时给出正确的数量和顺序,会依次用来初始化函数中的形参。
写在最后:
更新C语言学习笔记
如有错误,烦请多多批评指正!