组成函数的要素
int add(int a,int b)
{
return a+b;
}
返回值 函数名(参数类型 参数名,参数类型 参数名)
{
函数内容;
return 函数返回值;
}
*()表明它是函数。{}内部是函数内容。
*返回值
当返回值是void时:return;。
函数返回值不写时默认返回int。
*函数名:自定义的函数名要有意义。
*函数参数
函数定义时参数是形参,函数调用时参数是实参。(3和5是实参,a和b是型参)
实参与型参区别
实参:传过去的数字,必须要有个准确的值。
形参:代表实参的数,占据内存,调用才创建,调用结束后销毁。
形参是实参的拷贝,形参修改不影响实参。
*传值调用和传址调用:解决想返回多个值的问题
传值:参数是变量,形参有自己独立的空间,对变量的值无影响。
传址:参数是变量指针,通过对指针解引用改变变量的值。地址无法变化,地址指向的内容可以改变。
传址节约空间,速度更快,但可能修改原数据。
特殊参数
数组
int add(int arr[]);
int add(int*arr);
add(arr);
参数为数组名时,传递过去的是首元素地址。在函数内部无法求出数组大小及长度。
sizeof(arr)在函数内部为地址大小。
函数的声明,定义,调用
int add(int a,int b);//函数声明
int main()
{
int c=add(3,5);//函数调用
return 0;
}
int add(int a,int b)//函数定义
{
return a+b;
}
一般声明和定义统一放在main函数上面,可简化。
声明可以省略形参,只写数据类型。
在实际开发中,函数声明统一放在一个头文件中,函数定义在源文件中,函数调用在测试源文件中,只要源文件中包含头文件即可使用。好处:模块开发,隐藏代码(静态库导入)
函数的类型
*标志库函数
头文件:#include<>
*自定义函数
头文件:#include" "
两种包含方式区别?波奇学c语言:代码的编译和链接_社交达人波奇酱的博客-CSDN博客
函数的链式访问
把一个函数的返回值当作另一个函数的参数
printf("%d",printf("%d",43));//432
printf的返回值为打印的字符长度。返回值2被printf再次打印
函数嵌套调用
函数内部可以调用其他函数,但不能定义其他函数。
函数的调试和观察(vs2022)
F10:进入调试界面。再按进入直接下一步
F11:进入函数内部。
c标准库函数:cplusplus.com - The C++ Resources Network