C/C++系列之复杂引用
以struct类型为例:
- 引用
#include"iostream"
#include<string>
using namespace std;
struct mycoach
{
string name;
int age;
}; void printinfo1(mycoach &cpc)
{
//参数是mycoach实例的别名,指向入参的真实地址,所以一改入参的值也跟着改
cpc.name = "陈培昌";
} void main()
{
mycoach coach1;
coach1.name = "徐晓冬";
printinfo1(coach1);
cout << "这位神秘嘉宾是" << coach1.name << endl;//陈培昌
system("pause");
}
输出结果:

- 形参传入----可以预见这种方式不会改变struct实例的值
#include"iostream"
#include<string>
using namespace std;
struct mycoach
{
string name;
int age;
}; void printinfo1(mycoach cpc)
{
//参数是mycoach实例的别名,指向入参的真实地址,所以一改入参的值也跟着改
cpc.name = "陈培昌";
} void main()
{
mycoach coach1;
coach1.name = "徐晓冬";
printinfo1(coach1);
cout << "这位神秘嘉宾是" << coach1.name << endl;
system("pause");
}
输出结果:

- 指针---效果同引用
#include"iostream"
#include<string>
using namespace std;
struct mycoach
{
string name;
int age;
}; void printinfo3(mycoach *cpc)
{
//和引用效果一样,入参为指针类型,可以更改指向地址的数据
cpc->age = ;
cout << "hello, myname is " << cpc->name << "今年芳龄" << cpc->age << endl;
} void main()
{
mycoach coach1;
coach1.name = "徐晓冬";
mycoach *xxd = &coach1;
printinfo3(xxd);
cout << "这位神秘嘉宾是" << coach1.name << endl;
system("pause");
}
输出结果:

通过代码可以看出,函数中传入的指针和struct实例处于同一内存地址上
#include"iostream"
#include<string>
using namespace std;
struct mycoach
{
string name;
int age;
}; void printinfo3(mycoach *cpc)
{
//和引用效果一样,入参为指针类型,可以更改指向地址的数据
cpc->age = ;
cout << "hello, myname is " << cpc->name << "今年芳龄" << cpc->age << endl;
printf("内存地址是%d\n",cpc);
} void main()
{
mycoach coach1;
coach1.name = "徐晓冬";
mycoach *xxd = &coach1;
printinfo3(xxd);
cout << "这位神秘嘉宾是" << coach1.name << endl;
printf("struct实例地址是%d\n", &coach1);
system("pause");
}

C/C++系列之复杂引用的更多相关文章
- iOS开发系列-定时器强引用问题
概述 iOS开发中常用的定时器NSTimer.CADisplayLink. NSTimer 和 CADisplayLink 基本使用 NSTimer的创建方法有两个scheduledTimerWith ...
- [Unity2d系列教程] 002.引用外部DLL - C
上一篇我们学习了Unity调用C#生成的外部DLL,但是有时候我们需要访问底层,不能不适用C生成的DLL.下面就让我们一起学习下,C如何生成. 1.创建一个C的控制台程序 2.点击确定->点击下 ...
- [Unity2d系列教程] 001.引用外部DLL - C#
众所周知,Unity可以支持多种语言开发, C#, JS, Boo三种方式的开发, 能够很方便的集成一些外部插件,以便调用现有的动态链接库.学过C#的都知道C#可以生成一个dll供给其他的程序调用.那 ...
- Java8新特性之方法引用
<Java 8 实战>学习笔记系列 定义 方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它,可以把方法引用看作针对仅仅涉及单一方法的Lambda的语法糖,使用它将减少自己 ...
- document.all的详细解释(document.all基本上所有浏览器可用!)
从何而来从IE4开始IE的object model才增加了document.all对象,MSDN中也对 Object.all 有详细的说明,Object.all是个HTMLCollection,不是数 ...
- 转:Beautiful Soup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...
- SQL语言笔记
字符串用单引号',判断用单等号=,两个单引号''转义为一个单引号' 不等号是<> 不区分大小写 []括起来的要不是关键字,要不是非法变量,比如空格隔起来的变量 创建与删除数据库 - ...
- SQLserver 连接+开窗函数+视图+事务
今天学习SQLserver 连接以及开窗函数..加油! 1.复习:查询(检索)->筛选列->筛选行:distinct top where 运算符与关键字:比较运算符,逻辑运算符,betwe ...
- sql Servers数据库基础
1. 数据库约束包含: ·非空约束 ·主键约束(PK) primary key constraint 唯一且不为空 ·唯一约束(UQ) unique constraint 唯一 ...
随机推荐
- Java Script 学习日志 Div
2019年7月7日 学习网站: http://www.w3school.com.cn/js/js_examples.asp 1.输出 1. 1首先就是输出看 <script> docume ...
- ARTS第九周打卡
Algorithm : 做一个 leetcode 的算法题 /* 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. ...
- wordpress 后台无法登录 网站内容缺失
昨天网站又突然不正常了,前两天都是好的.. 具体来说就是wp后台登录不进去,一直在登录页跳转,与此同时服务器上其他网站也有这个问题,而且有些网站的板块内容也缺失了, 所以首要就是要登录进后台看看是不是 ...
- LIUNX随堂学习-1 用户及查看信息
1.useradd #创建用户 例如:useradd ljj 创建一个名为ljj的用户 2.userdel -r #删除用户 例如:userd ...
- Linux十大顶级发行版本
当前顶级发行版概览 对于Linux新手来说,在各发行版之间困惑得进行选择和不断增加的数量实在令人头晕.这就是写作本文的原因,其中列出的10个(附加一个值得一提的FreeBSD,BSD一族中最为流行 ...
- SAS学习笔记16 SAS创建计数(枚举)变量
- 标准Trie、压缩Trie、后缀Trie
ref : https://dsqiu.iteye.com/blog/1705697 1.Trie导引 Trie树是一种基于树的数据结构,又称单词查找树.前缀树,是一种哈希树的变种.应用于字符串的统计 ...
- Windows 32位-调试与反调试
1.加载调试符号链接文件并放入d:/symbols目录下. 0:000> .sympath srv*d:\symbols*http://msdl.microsoft.com/download/s ...
- Nuget常用命令(转)
转自:https://www.cnblogs.com/xcsn/p/6259853.html CMD将nuget升级到最新版本:nuget update -self 一.安装 1.安装指定版本类库in ...
- [JZOJ5897]密匙--哈希骚操作
[JZOJ5897]密匙--哈希骚操作 题目链接 太懒了自行Google 前置技能 二分/倍增求LCP e.g TJOI2017DNA 分析 这题看了样例解释才知道什么意思 本以为自己身为mo法师蛤希 ...