以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++系列之复杂引用的更多相关文章

  1. iOS开发系列-定时器强引用问题

    概述 iOS开发中常用的定时器NSTimer.CADisplayLink. NSTimer 和 CADisplayLink 基本使用 NSTimer的创建方法有两个scheduledTimerWith ...

  2. [Unity2d系列教程] 002.引用外部DLL - C

    上一篇我们学习了Unity调用C#生成的外部DLL,但是有时候我们需要访问底层,不能不适用C生成的DLL.下面就让我们一起学习下,C如何生成. 1.创建一个C的控制台程序 2.点击确定->点击下 ...

  3. [Unity2d系列教程] 001.引用外部DLL - C#

    众所周知,Unity可以支持多种语言开发, C#, JS, Boo三种方式的开发, 能够很方便的集成一些外部插件,以便调用现有的动态链接库.学过C#的都知道C#可以生成一个dll供给其他的程序调用.那 ...

  4. Java8新特性之方法引用

    <Java 8 实战>学习笔记系列 定义 方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它,可以把方法引用看作针对仅仅涉及单一方法的Lambda的语法糖,使用它将减少自己 ...

  5. document.all的详细解释(document.all基本上所有浏览器可用!)

    从何而来从IE4开始IE的object model才增加了document.all对象,MSDN中也对 Object.all 有详细的说明,Object.all是个HTMLCollection,不是数 ...

  6. 转:Beautiful Soup

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...

  7. SQL语言笔记

      字符串用单引号',判断用单等号=,两个单引号''转义为一个单引号' 不等号是<> 不区分大小写 []括起来的要不是关键字,要不是非法变量,比如空格隔起来的变量   创建与删除数据库 - ...

  8. SQLserver 连接+开窗函数+视图+事务

    今天学习SQLserver 连接以及开窗函数..加油! 1.复习:查询(检索)->筛选列->筛选行:distinct top where 运算符与关键字:比较运算符,逻辑运算符,betwe ...

  9. sql Servers数据库基础

    1. 数据库约束包含:     ·非空约束     ·主键约束(PK) primary key constraint 唯一且不为空     ·唯一约束(UQ) unique constraint 唯一 ...

随机推荐

  1. 微信小程序session_key和access_token傻傻分不清楚

    之前一直对着文档使用特定接口, 今天闲来仔细研究一下各个接口的使用, 然后发现了session_key和access_token两个关键字意义有点重复啊? 目测都是某种钥匙来打开一扇门的, 那为什么有 ...

  2. ORACLE 的前后台进程

    关于oracle用户进程,服务进程,后台进程 用户进程(User Process) 是一个需要与Oracle Server交互的程序 运行于客户端 当用户运行某个工具或应用程序(如SQL*Plus)时 ...

  3. Python开发【杂货铺】:作用域的痛点

    1.块级作用域 想想此时运行下面的程序会有输出吗?执行会成功吗? #块级作用域 if 1 == 1: name = "lzl" print(name) for i in range ...

  4. SAS学习笔记12 SAS数据清洗和加工

    set语句纵向合并 我们把a1和b1进行合并,并区分是来自哪个数据集,会用到in=选项 in=a是产生临时变量a,由于它是a1的选项,所以a的值=1(来自a1)或者=0(不来自a1) in=b是产生临 ...

  5. django中使用redis保存session(转)

    原文:https://blog.csdn.net/Enjolras_fuu/article/details/79661582 Django-redis-session官网:https://pypi.o ...

  6. java 获取json字符串中key对应的值

    用到了Gson的JsonParser maven项目引入 <dependency> <groupId>com.google.code.gson</groupId> ...

  7. (十二)Hibernate中的多表操作(2):单向多对一

    由“多”方可知“一”方的信息,比如多个员工使用同一栋公寓,员工可以知道公寓的信息,而公寓无法知道员工的信息. 案例一:使用xml配置 pojo类 Group.java package bean; // ...

  8. c# 实体类转XML

    /// <summary> /// 将实体类转换成XML /// </summary> /// <typeparam name="T">< ...

  9. 解决tensorflow 调用bug Running model failed:Invalid argument: NodeDef mentions attr 'dilations' not in Op<name=Conv2D; signature=input:T, filter:T ->

    将tensorflow C++ 版本更新为何训练版本一致即可

  10. SVN 问题解决之 The XML response contains invalid XML

    公司几个同事的SVN更新时出现了The XML response contains invalid XML报错 经Google得到一个线索,可能和Http请求有关. 想起之前项目改过一次网络请求方式, ...