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 唯一 ...
随机推荐
- 【leetcode算法-简单】58. 最后一个单词的长度
[题目描述] 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度. 如果不存在最后一个单词,请返回 0 . 说明:一个单词是指由字母组成,但不包含任何空格的字符串. 示例: 输 ...
- Centos7安装vim8.0 + YouCompleteMe
更新yum sudo yum upgrade sduo yum update 下载git sudo yum install git 升级vim以及gcc 升级gcc sudo yum install ...
- [转帖]持久化journalctl日志清空命令查看配置参数详解
持久化journalctl日志清空命令查看配置参数详解 最近 linux上面部署服务 习惯使用systemd 进行处理 这样最大的好处能够 使用journalctl 进行查看日志信息. 今天清理了下 ...
- K8S从入门到放弃系列-(5)kubernetes集群之kube-apiserver部署
摘要: 1.kube-apiserver为是整个k8s集群中的数据总线和数据中心,提供了对集群的增删改查及watch等HTTP Rest接口 2.kube-apiserver是无状态的,虽然客户端如k ...
- XDomainRequest IE8&IE9 cors 跨域通讯的处理方法
版权声明:避免百度一下通片同一篇文章,未经博主允许不得转载.本博客作为笔记使用,正确性请自行验证. https://blog.csdn.net/u014071104/article/detail ...
- HTML札记
HTML 指的是 超文本标记语言 (Hyper Text Markup Language) 文档后缀名: 当您保存 HTML 文件时,既可以使用 .htm 也可以使用 .html 扩展名.两者没有区别 ...
- php 获取某个月的周一
今天有个朋友问了一个问题,最后解决了下,先整理记下来,后面用到了再说 function getMonday($month = ''){ if(empty($month)){ $month = date ...
- 音视频入门-03-RGB转成BMP图片
* 音视频入门文章目录 * BMP 文件格式解析 BMP 文件由文件头.位图信息头.颜色信息和图形数据四部分组成. 位图文件头(14个字节) 位图信息头(40个字节) 颜色信息 图形数据 文件头与信息 ...
- 轻松搭建CAS 5.x系列(8)-在CAS Server增加双因素认证(DUO版)
概述说明 为了让系统更加安全,很多登录会加入双因素认证.何为双因素,如果把登陆作为开一扇门的话,那就是在原来的锁上再加一把锁,第二锁用新的钥匙,这样安全系数就更加高了. CAS是通过账号名和密码来认证 ...
- (三)Activiti之第一个程序以及Activiti插件的使用和Activiti表的解释
一.案例 1.1 建立Activiti Diagram图 new -> activiti ->Activiti Diagram,创建一个HelloWorld文件,后缀自动为bpmn,如下图 ...