准备

https://zhuanlan.zhihu.com/p/27974028

开始

int   是int类型变量声明

int * 是int指针声明,指针其实就是地址变量,用来储存地址值的"容器"

首先有一个概念

int a;

int &x = a;

a = 123;

以下用%d代替变量a的值

那么,

a                     int型变量

%d         a目前储存的数据,整数123

&k                   int型变量,a的别名

假如现在有一个指针p和一个引用k

&k = p;

p         地址变量,即指针

*p       p目前储存的数据,即地址0x12345678

int *&k     地址变量,即指针,p的别名

总结,打印*p,即打印目前取得的值(是值,数据)

p或者*&k是指针(地址变量,是用来储存地址的容器)

容器可以储存不同的数据,用来存放不同的值

而数据是数值,如同123,就是一个值而已

用法区别:

引用的用法之一:传递指针给子函数,并在子函数中改变这个指针的值(指向的地址)

地址的用法:传递地址*p给子函数,子函数中变量再怎么变化也不会影响main中的指针p


附上:指针值传递、地址传递和引用传递

其实在c里也是可以用巧妙的方法传递指针的,只要用新指针k指向目标指针b,然后传递k的地址   [k是指针的指针,他的值是 指针b所在地址]

 #include <stdio.h>

 void testpointer(int **);
int main(void){
int a = ;
int * p = &a; // p: 0x65fecc
testpointer(&p);
printf("In Main,p is [%d]\n", *p);
} void testpointer(int **k){
printf("[%x]\n", *k); // **k(<指针的指针>,名为k): 0x65fec8
// 打印出*k即p值为 0x65fecc printf("{%d}\n", *(*k)); // *k就是p,都指向着int变量a, 所以间接运算符结果为a的值7
int b = ;
*k = &b; // 修改*k 就是修改p。
/* 因为**k是指针的指针,名为k,指向p的地址。
*k是<指针的指针 k>的值,指针的指针的值自然是指针了,所以*k就是p */
}

运行结果:

[65fecc]
{}
In Main,p is []

另外也可以不用二级指针,而使用函数返回值

如 SeqList * L;

L = InitList();

声明 SeqList * InitList(void); 函数体略

关于指针与引用的差别——C++的更多相关文章

  1. C++ 指针与引用 知识点 小结

    [摘要] 指针能够指向变量.数组.字符串.函数.甚至结构体.即指针能够指向不同数据对象.指针问题 包含 常量指针.数组指针.函数指针.this指针.指针传值.指向指针的指针 等. 主要知识点包含:1. ...

  2. C++_系列自学课程_第_8_课_指针和引用_《C++ Primer 第四版》

    C语言最富有迷幻色彩的部分当属指针部分,无论是指针的定义还是指针的意义都可算是C语言中最复杂的内容.指针不但提供给了程序员直接操作硬件部分的操作接口,还提供给了程序员更多灵活的用法.C++继承这一高效 ...

  3. C++ 指针—02 指针与引用的对照

    ★同样点: ●都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:而引用则是某块内存的别名. ★不同点: ●指针是一个实体,而引用仅是个别名: ●引用仅仅能在定义时被初始化一次,之后不可变: ...

  4. C++指针和引用简介

    摘要 本文介绍C++指针和概念引用 这是一个指针 指针的类型 指针所指向的类型 指针表达式 指针与函数 什么是引用 指针引用差别 指针和引用的同样点和不同点 **什么是指针** 指针就是一个存放地址的 ...

  5. C++之指针,引用与数组

    引用只是对象的另一个名字,通过在变量名前面添加"&”符号来定义,而指针保存的是另一个对象的地址,它们两都提供了间接访问所服务变量的途径. 但是它们的差别还是挺大的: 先从它们的值说起 ...

  6. [速记]关于指针,引用和递归和解递归——C++

    在写基于二叉排序树的查找时,分为三个过程 1.二叉排序树的插入 2.二叉排序树的建立 3.基于二叉排序树的查找 其中第三部可以递归方式实现,也可以用while循环解递归,于是我想也解解第一步的递归,看 ...

  7. C++指针参数引用

    粘个代码占位置,以后有时间把指针函数,函数指针都补上 #include <iostream> using namespace std; void freePtr1(int* p1){ /* ...

  8. C/C++:提升_指针的指针和指针的引用

    C/C++:提升_指针的指针和指针的引用 写在前面 今天在使用指针的时候我发现了一个自己的错误.

  9. C++学习笔记 指针与引用

    指针与引用  1. 指针 (1) 指针是一个变量(实体),存储的是一个地址,指向内存的一个存储单元,指针可以为空 (2) 指针可以为空,在声明定义时可以不初始化 (3) 指针在初始化之后可以重新指向其 ...

随机推荐

  1. Flume笔记

    flume自定义拦截器:实现Interceptor接口flume自定义source:继承AbstractSourceflume自定义sink:继承AbstractSink azkaban:任务调度工具 ...

  2. 微博Feed流

    一.微博核心业务图 二.微博的架构设计图 三.简述 先来看看Feed流中的一些概念: Feed:Feed流中的每一条状态或者消息都是Feed,比如微博中的一条微博就是一个Feed. Feed流:持续更 ...

  3. 使用yarn来替代npm

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的 安装yarn ...

  4. java架构之路-(JVM优化与原理)JVM的运行时内存模型

    还是我们上次的图,我们上次大概讲解了类加载子系统的执行过程,验证,准备,解析,初始化四个过程.还有我们的双亲委派机制. 我们这次来说一下运行时内存模型.上一段小代码. public class Mai ...

  5. java架构之路-(mysql底层原理)Mysql索引和查询引擎

    今天我们来说一下我们的mysql,个人认为现在的mysql能做到很好的优化处理,不比收费的oracle差,而且mysql确实好用. 当我们查询慢的时候,我会做一系列的优化处理,例如分库分表,加索引.那 ...

  6. Java生鲜电商平台-redis缓存在商品中的设计与架构

    Java生鲜电商平台-redis缓存在商品中的设计与架构 说明:Java开源生鲜电商平台-redis缓存在商品中的设计与架构. 1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而 ...

  7. CTF必备技能丨Linux Pwn入门教程——ShellCode

    这是一套Linux Pwn入门教程系列,作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的一些题目和文章整理出一份相对完整的Linux Pwn教程. 课程回顾>> Linu ...

  8. swift(二)swift字符串和字符和逻辑运算

    /* 1.swift字符串和字符 2.构造字符串 3.字符串比较 4.数值运算 5.复制运算 6.关系运算 7.逻辑运算 8.区间运算 */ /* //数据 + 数据的处理 //字符信息+ 字符信息的 ...

  9. Mac下安装npm全局包提示权限不够

    Mac OS下安装npm的全局包,总是出现如下提示Missing write access,需要提升权限才能继续. npm WARN checkPermissions Missing write ac ...

  10. docker研究-4 docker镜像制作

    这次实验以centos镜像为基础镜像进行相关docker镜像制作. 1. 下载centos镜像 [root@localhost ~]# docker pull centosUsing default ...