函数的形参(普通形参、指针形参、引用形参)
2012-02-28 16:36
731 查看
int n=10;
add1(n);
1、普通形参
void add1(int v1)
{
v1+=1;/对实参无影响
}
这是最普通的形参方式,形参仅仅为实参的一个副本,对形参的任何操作不会修改实参的值。例中对v1的操作只是修改了实参的一个副本。实参不变
int *p=&n;
add2(p);//p为指向n的指针
或者直接add2(&n)
2、指针形参
void add2(int *p)
{
*p+=1;//实参才会变
p+=1;//对实参无影响
(*p)++;//实参才会变
}
使用指针做为函数的形参,只有对指针所指对象进行的操作才会改变实参的值。要实现改变实参,还有一种更安全更自然的方法-引用形参。
//在执行add2(&n)时,系统在内存分配表里增加了一行add2中的p”,其地址为新地址,值为&n。操作*p,即是在操作n了。有点类似引用,*p即为n的一个别名
int a=1,b=2;
swap(a,b);
3、引用形参
void swap(int &a,int &b)
{
int temp=a;
a=b; //会改变实参的值
b=temp; //会改变实参的值
}
引用形参直接关联到其所绑定的对象,而非这些对象的副本。 所以这种方法可以修改实参的值,而且更加直观。
函数的形参和实参具有以下特点:
1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
3. 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
4. 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。故需要手动修改才可。
add1(n);
1、普通形参
void add1(int v1)
{
v1+=1;/对实参无影响
}
这是最普通的形参方式,形参仅仅为实参的一个副本,对形参的任何操作不会修改实参的值。例中对v1的操作只是修改了实参的一个副本。实参不变
int *p=&n;
add2(p);//p为指向n的指针
或者直接add2(&n)
2、指针形参
void add2(int *p)
{
*p+=1;//实参才会变
p+=1;//对实参无影响
(*p)++;//实参才会变
}
使用指针做为函数的形参,只有对指针所指对象进行的操作才会改变实参的值。要实现改变实参,还有一种更安全更自然的方法-引用形参。
//在执行add2(&n)时,系统在内存分配表里增加了一行add2中的p”,其地址为新地址,值为&n。操作*p,即是在操作n了。有点类似引用,*p即为n的一个别名
int a=1,b=2;
swap(a,b);
3、引用形参
void swap(int &a,int &b)
{
int temp=a;
a=b; //会改变实参的值
b=temp; //会改变实参的值
}
引用形参直接关联到其所绑定的对象,而非这些对象的副本。 所以这种方法可以修改实参的值,而且更加直观。
函数的形参和实参具有以下特点:
1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
3. 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
4. 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。故需要手动修改才可。
相关文章推荐
- C++中函数用普通变量,指针,引用做形参的区别
- 函数的形参(普通形参、指针形参、引用形参)
- 指针形参,引用变量,普通变量比较
- 函数参数——普通形参与引用形参
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- 函数中的形参问题(指针形参、引用形参、二重指针作为形参)
- 指针与引用(函数形参的值传递,引用传递,指针传递)
- 函数的形参(非引用形参、指针形参、引用形参)
- C++,常量,const,constant,引用,指针,形参,实参,函数,返回值
- 函数返回const引用形参的指针问题
- 引用、指针和指向指针的指针在函数形参中的应用
- 如何理解函数形参为指针和引用类型的参数传递
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- 第七章、函数形参(指针与引用以及传递给函数的数组、vector的操作)
- 非引用形参包括普通对象形参和指针对象形参
- 细嚼慢咽C++primer(3)——引用形参,内联函数,重载函数,指向函数的指针
- 函数的形参(非引用形参、指针形参、引用形参)
- 函数中指针和引用的形参和实参
- 细嚼慢咽C++primer(3)——引用形参,内联函数,重载函数,指向函数的指针
- 函数形参 原型、指针、引用、