形参定义:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。
形参作用:实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。
形参的特点:
1:形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
2: 实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。
常用的形参方式:
1:非引用参数
例:
void add(int x1,int x2)
{
printf("x1+x2=%d\n",(x1+x2));
}
注:这是最常用的形参方式,在函数被调用时,将会分配内存创建实参的副本(拷贝)。请理解采取副本的原因:(参见形参特点2)由于要使得形参只在函数内部有效,所以我们在函数调用时不能直接对保存实参的内存进行直接操作,而是对实参的拷贝进行操作。
2:指针形参
例:
void add(int *x1,int *x2)
{
printf("(*x1+*x2)=%d\n",(*x1+*x2));//将int型数组x1和x2的首个元素进行相加求和
*x1=10;//将改变实参的值
}
注:指针形参在函数调用时会创建指针的副本(可以理解为存放指针的变量),所以我们在函数中获得了指向指定数据块(实参)的指针,即可以对该数据块(实参)进行修改。同时由于指针可能指向一个对象或没有任何对象,所以函数在确定指针实际指向一个有效地对象之前不能安全地解引用一个指针。
3:引用形参
例1:
void add(int &x1,int &x2)
{
printf("x1+x2=%d\n",(x1+x2));
x1=2;//将改变实参的值
x2=3;//将改变实参的值
}
例2:
void test(char *&fp)
{
fp="ssssssss";//将改变实参的值
cout<<"int :"<<fp<<endl;
}
注:引用形参将直接捆绑实参对象,可以理解为实参的别名,对其操作实际就是直接对实参操作。由于应用形参需要和实参对象进行直接的绑定,所以引用必须被初始化为指向一个对象,而且一旦初始化将不能再指向其他对象。
参考文章:
本文详细介绍了函数形参的概念、作用及特点,并通过实例展示了非引用参数、指针形参和引用形参的使用方法。理解这些概念有助于更好地掌握函数调用机制。
2622

被折叠的 条评论
为什么被折叠?



