准备

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); 函数体略

最新文章

  1. cocos2d-x宏定义
  2. [转]关于SVN的操作批处理示例
  3. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图
  4. C#-WebForm-WebForm开发基础、如何给控件注册事件?——事件委托写法、http无状态性、三层结构
  5. rdesktop的使用
  6. C# 中正确实现 IDisposable 接口
  7. 7-13IN和NOT IN 子查询
  8. EF错误记录
  9. HDU 4283 You Are the One (12年天津 区间DP)
  10. spring拦截器
  11. Tomcat源码学习记录--web服务器初步认识
  12. 用异提交时,后台通过校验规则文件,校验不通过时,跳转到INPUT视图时,前台显示错误信息的解决办法
  13. iOS 执行ScrollView在空白空间-解
  14. Enhancing Reliability and Response Times via Replication in Computing Clusters---INFOCOM 2015
  15. linux下如何使用vnstat查看服务器带宽流量统计
  16. linux cat more less head tail
  17. Oracle安装oraInventory问题
  18. Qt 地址薄 (二) 添加地址
  19. 【翻译】Ext JS 5:为不同设备设置不同的主题
  20. java基础知识—类和对象

热门文章

  1. 三、ForkJoin分析
  2. date——系统时间的命令
  3. 【洛谷5439】【XR-2】永恒(树链剖分,线段树)
  4. ocelot性能测试
  5. (windows)局域网内无法访问FTP服务器的解决方法
  6. Python笔记:threading(多线程操作)
  7. Web Api 模型绑定 二
  8. 十:装饰器模式(io流)
  9. Vue+ElementUI 安装与应用
  10. Oracle使用命令行登录提示ERROR: ORA-01017: invalid username/password; logon denied