内置类型和结构体类型作为函数参数传递时的共同点
来源:互联网 发布:centos jdk 编辑:程序博客网 时间:2024/06/10 07:27
http://blog.csdn.net/s3olo/article/details/8688725
内置类型和结构体类型作为函数参数传递时的共同点
分类: C2013-03-18 20:12 275人阅读 评论(0) 收藏 举报
结构体类型不同于数组,而结构体类型与内置类型有很多相同之处。数组名代表数组的第一个元素的地址,而结构体名代表的却不是地址而是第一个元素的值。在作为函数参数时,和内置类型一样,可以通过值(结构体名)、引用、指针几种方式传递。而且其传递特点与内置类型一致,例子:
- #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(数组名)
a(数组名)结构体类型(引用)a&b结构体类型(指针)&a*b另外,C++不支持直接输出结构体名,而用C可以直接输出结构体名,得到的是第一个元素的地址。 0 0
- 内置类型和结构体类型作为函数参数传递时的共同点
- 内置类型和结构体类型作为函数参数传递时的共同点
- 结构体类型数据作为函数参数
- c++:结构体类型作为函数参数
- C++结构体类型作为函数参数
- 结构体类型作为函数参数
- Java值传递和地址传递:关于String类型和集合类型作为函数参数时传值问题的测试
- 结构体类型数据作为函数参数(三种方法
- java的String类型作为参数传递
- 委托类型作为方法参数的传递
- 基本类型和引用类型作为参数传递
- 一次python对dll的调用,传递string类型的参数作为调用函数的参数
- Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 指针类型作为成员函数的参数
- 结构体作为参数的传递和返回
- iOS面试题
- sns
- QT QMap介绍与使用
- MapReduce计算过程中的压缩和效率的对比问题
- 没落的中医,是谁的过错(1)
- 内置类型和结构体类型作为函数参数传递时的共同点
- jsp 标签 $ % #
- LeetCode-Jump Game II
- hdu 4946 Area of Mushroom
- c++编译时如何把private属性变成public?
- ACM题集以及各种总结大全!
- 没落的中医,是谁的过错(2)
- 产品分类检索解决方案(基于数据库)
- 不重新启动Linux,手工识别在线新增磁盘方法