1.需要改变实参的值时需要向函数传递实参的地址,否则直接传递数值即可。
2.函数的参数也可以是函数(返回值)。在函数调用时,实参需要是确定的值。
3.函数调用:(1)传值调用,eg:Swap1(a,b),对形参的修改不会影响实参(2)传址调用,eg:Swap2(&a,&b),可以让函数和函数外部的变量之间建立联系。
4.函数的功能越简单越泛用。
5.可以先写需求函数的使用,再对需求函数实现功能本身进行编写,逻辑清晰。
6.形式参数和实际参数的名字可以相同,也可以不同。
7.在函数内部无法计算数组内元素个数,因为对于数组而言,实参传给形参的是数组首地址(大小4/8)。
8.写代码尽量不要使用全局代码,因为每个函数都可以使用,因此该变量非常不稳定,容易出现BUG。
9.函数之间是可以进行组合互相调用的,即函数可以嵌套调用:
void new_line()
{
printf("hehe\n");
}
void three_line()
{
int i = 0;
for (i = 0; i < 3; i++)
{
new_line();
}
}
int main()
{
three_line();
return 0;
}
10.函数不能嵌套定义,即不能将函数的定义放在另外一个函数体内部。
11.函数的链式访问(一个函数的返回值作为另一个函数的参数):
int main()
{
int len = strlen("abcdef");
printf("%d\n", len);
//链式访问
printf("%d\n", strlen("abcdef"));
printf("%d", printf("%d", printf("%d", 43))); //4321,printf返回打印字符的个数
return 0;
}
函数链式访问的前提是作为参数的函数有返回值。