内置类型和结构体类型作为函数参数传递时的共同点
2014-08-15 13:06
218 查看
http://blog.csdn.net/s3olo/article/details/8688725
内置类型和结构体类型作为函数参数传递时的共同点
分类: C2013-03-1820:12 275人阅读 评论(0) 收藏 举报
结构体类型不同于数组,而结构体类型与内置类型有很多相同之处。数组名代表数组的第一个元素的地址,而结构体名代表的却不是地址而是第一个元素的值。在作为函数参数时,和内置类型一样,可以通过值(结构体名)、引用、指针几种方式传递。而且其传递特点与内置类型一致,例子:
[cpp] view
plaincopy
#include <iostream>
using namespace std;
typedef struct Change
{
int m;
int n;
}StrChange;
void Change(int a1);
void YChange(int &b1);
void PChange(int *c1);
void Change1(StrChange ChangeL1 );
void YChange1(StrChange &ChangeM1);
void PChange1(StrChange *ChangeN1);
void main()
{
int a = 1;
int b = 2;
int c = 3;
StrChange ChangeL;
StrChange ChangeM;
StrChange ChangeN;
ChangeL.m = 4;
ChangeL.n = 5;
ChangeM.m =6;
ChangeM.n = 7;
ChangeN.m = 8;
ChangeN.n = 9;
Change(a); //传值,无法改变
YChange(b); //引用,可以改变
PChange(&c); //指针(地址),可以改变
Change1(ChangeL); //值,无法改变。和基本类型一样,不能通过传值改变,这里不同于数组!
YChange1(ChangeM); //引用,可以改变
PChange1(&ChangeN); //指针(地址),可以改变
cout<<"The a is : "<<a<<endl;
cout<<"The b is : "<<b<<endl;
cout<<"The c is : "<<c<<endl;
cout<<"The m in struct L is : "<<ChangeL.m<<endl;
cout<<"The n in struct L is : "<<ChangeL.n<<endl;
cout<<"The m in struct M is : "<<ChangeM.m<<endl;
cout<<"The n in struct M is : "<<ChangeM.n<<endl;
cout<<"The m in struct N is : "<<ChangeN.m<<endl;
cout<<"The n in struct N is : "<<ChangeN.n<<endl;
}
void Change(int a1)
{
a1 = 11;
}
void YChange(int &b1)
{
b1 = 22;
}
void PChange(int *c1)
{
*c1 = 33;
}
void Change1(StrChange ChangeL1 )
{
ChangeL1.m = 44;
ChangeL1.n = 55;
}
void YChange1(StrChange &ChangeM1)
{
ChangeM1.m = 66;
ChangeM1.n =77;
}
void PChange1(StrChange *ChangeN1)
{
ChangeN1->m = 88;
(*ChangeN1).n = 99;
}
注意:以结构体名作为参数传递时,同内置类型一样不能对实参做修改。而通过引用和指针则可以修改实参。一定要注意实参与形参的对应关系:
实参 | 形参 | |
内置类型(传值) | a | b |
内置类型(引用) | a | &b |
内置类型(指针) | &a | *b |
结构体类型(传值) | a(数组名) | a(数组名) |
结构体类型(引用) | a | &b |
结构体类型(指针) | &a | *b |
相关文章推荐
- 内置类型和结构体类型作为函数参数传递时的共同点
- string类型在参数传递中如何作为引用,如何在函数外修改函数内的string类型
- Java值传递和地址传递:关于String类型和集合类型作为函数参数时传值问题的测试
- 如何将二维数组作为函数的参数传递
- C++中将字符串作为参数传递,应采用什么类型变量
- 在COM/DCOM中如何将数组作为函数返回的类型传递
- C# 引用类型作为函数参数时
- 利用数组名作为函数参数传递排序和用指针进行排序
- 如何将二维数组作为函数的参数传递
- 专题:二维数组作为函数参数传递
- 在dll导出函数参数中传递map类型的参数,在函数内insert时出非法访问错
- 指针作为函数参数传递
- 转:如何将二维数组作为函数的参数传递
- 关于inline函数,可以作为函数参数传递的思考
- C/C++ 将函数名作为函数参数传递
- 有没有试过将函数作为参数(parameter)来传递?(推荐)
- 函数作为参数的传递
- 如何将二维数组作为函数的参数传递
- java函数的参数传递和String类型
- 多维动态数组作为函数传递参数