`
synchronized_lala
  • 浏览: 39828 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

指针的简单回顾测试

阅读更多
#include<iostream>

using namespace std;

void swap(int **a,int **b)
{
	cout << endl;
	cout << *a++  << "   *a++      *****" << endl;
	cout << a  << "   a          *****" << endl;
	cout << *a  << "   *a          *****" << endl << endl;

	cout << ++(*a)  << "   (*a)++   33*****" << endl;
	cout << a  << "   a          11*****" << endl;
	cout << *a  << "   *a          22*****" << endl << endl;
}

void swap(int *a,int *b)
{
	a++;
	cout << a  << "          (int *a,int *b)" << endl;
}

void swap(int &a,int &b)
{
	a++;
}

int main()
{
/*	int c;
	int d;
	int *a=10;//error
//	a = new int;
//	*a=10;
	int *b=&d;
	*/
	int a = 10;
	int b = 20;
	int *c;
	int *d;
	c = &a;
	d = &b;
	int **f = &c;
	int **e = &d;

	cout << *c << endl;
	swap(*c,*d);
	cout << *c << endl;
	cout << "&c = " << &c << endl;
	cout << "c = " << c << endl;
	cout << "&a = " << &a << endl;
	swap(c,d);
	cout << "&a = " << &a << endl;
	cout << "c = " << c << endl;
	c ++;
	//&a ++;    error C2102: “&”要求左值
	cout << "After c ++,      &a = " << &a << endl;
	cout << "After c ++,      c = " << c << endl;
	cout << "After c ++,      &c = " << &c << endl;
	cout << "After c ++,      f = " << f << endl;
	swap(f,e);
	cout << "After swap(f,e),      &a = " << &a << endl;
	cout << "After swap(f,e),      c = " << c << endl;
	cout << "After swap(f,e),      &c = " << &c << endl;
	cout << "After swap(f,e),      f = " << f << endl << endl << endl;


    cout << &a << endl;
	swap(&a,&b);
	cout << &a << endl;
	cout << a << endl;
	swap(a,b);
	cout << a << endl;

	return 0;
}
 

 

输出:

 

 

10

11

&c = 002EFD04

c = 002EFD1C

&a = 002EFD1C

002EFD20          (int *a,int *b)

&a = 002EFD1C

c = 002EFD1C

After c ++,      &a = 002EFD1C

After c ++,      c = 002EFD20

After c ++,      &c = 002EFD04

After c ++,      f = 002EFD04

 

002EFD20   *a++      *****

002EFD08   a          *****

CCCCCCCC   *a          *****

 

CCCCCCD0   (*a)++   33*****

002EFD08   a          11*****

CCCCCCD0   *a          22*****

 

After swap(f,e),      &a = 002EFD1C

After swap(f,e),      c = 002EFD20

After swap(f,e),      &c = 002EFD04

After swap(f,e),      f = 002EFD04

 

 

002EFD1C

002EFD20          (int *a,int *b)

002EFD1C

11

12



 

 

 

 

引用与指针的区别:


引用被创建时必须被初始化,而指针不必
引用一旦被初始化则不能改变引用的对象,而指针可以随时改变指向的对象;
引用不能为NULL,而指针可以;

 

 

引用传递

被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址即通过堆栈中存放的地址访问主调函数中的实参变量

1
4
分享到:
评论
2 楼 synchronized_lala 2012-11-05  
白色蜻蜓 写道



1 楼 白色蜻蜓 2012-11-05  
顶一个
学习学习

相关推荐

    传智播客扫地僧视频讲义源码

    16_两个辅助指针变量挖字符串测试框架搭建 18_作业 源码及文档 01_课程回顾 02_两个赋值指针变量挖字符训练_第3种内存模型_传智扫地僧 03_多级指针的野指针问题(释放问题)_传智扫地僧 04_学员作业点评_典型错误...

    你必须知道的495个C语言问题

    5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 5.17 说真的,真有机器用非零空指针吗,或者不同类型用...

    《你必须知道的495个C语言问题》

    5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 60 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 60 5.17 说真的,真有机器用非零空指针吗,或者不同...

    【全新正版】现代C++程序设计(原书第2版)

    书中设计了超过115个完整的经过教学测试的代码示例,不仅分析了这些示例的代码片段,而且还解释了如何把它们组成一个完整的程序。此外,各章后面都提供了大量练习,有助于加强读者对相关内容的理解。 本书图文并茂,...

    用C编写班级成绩管理系统

    回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到...

    gasstationleetcode-cs102:[线性、树、图、DP]

    JUnit,测试驱动开发 字符串,字符串生成器 内部类,TreeNode 图节点表示 Java 8 特性 队列、堆栈、双端队列 树结构,树集 堆,优先队列 Guava(谷歌核心 Java 库 链表,ArrayDeque 哈希,哈希表 LRUCache 缓存,...

    C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf

    C++片段2 指针、多态和内存分配 113 C2.1 变量的内存分配和方法的前期绑定 114 C2.2 需要解决的问题 115 C2.3 指针与程序的自由存储 116 C2.3.1 释放内存 118 C2.3.2 避免内存泄漏 119 C2.3.3 避免悬挂指针 ...

    xml入门经典-part3(中文版)

    2.13.3 解析器基准测试 2.14 书籍目录应用程序 2.15 小结 第3章 文档类型定义 3.1 为何需要正式的结构 3.1.1 文档域 3.1.2 验证文档的有效性 3.2 编写DTD:通用原则 3.2.1 将DTD与XML文档相关联 3.2.2 基本...

    Delphi5开发人员指南

    1.3 历史回顾 5 1.3.1 Delphi 1 5 1.3.2 Delphi 2 6 1.3.3 Delphi 3 6 1.3.4 Delphi 4 7 1.3.5 Delphi 5 7 1.3.6 未来 7 1.4 Delphi 5的IDE 7 1.4.1 主窗口 8 1.4.2 窗体设计器 9 1.4.3 Object Inspector 9 1.4.4 ...

    Delphi 5 经典教程

    1.3 历史回顾 5 1.3.1 Delphi 1 5 1.3.2 Delphi 2 6 1.3.3 Delphi 3 6 1.3.4 Delphi 4 7 1.3.5 Delphi 5 7 1.3.6 未来 7 1.4 Delphi 5的IDE 7 1.4.1 主窗口 8 1.4.2 窗体设计器 9 1.4.3 Object Inspector 9 1.4.4 ...

    《C++编程艺术》教程+代码

    2.5.9 指针运算符和转换函数 30 2.5.10 begin()和end()函数 32 2.5.11 shutdown()函数 32 2.5.12 两个实用函数 33 2.6 GCInfo 33 2.7 Iter 34 2.8 如何使用GCPtr 36 2.8.1 处理分配异常 37 2.8.2 一个更有趣的示例 ...

    SQL21日自学通

    一个简单的PL/SQL 语句块395 又一个程序398 存储过程包和触发机制403 总结406 问与答407 校练场407 练习407 第19 天TRANSACT-SQL 简介408 目标408 TRANSACT-SQL 概貌408 对ANSI SQL 的扩展408 谁需要使用TRANSACT-...

    数据库系统实现

    9.2.3 优先图测试发挥作用的原因 习题 9.3 使用锁的可串行性实现 9.3.1 锁 9.3.2 封锁调度器 9.3.3 两阶段封锁 9.3.4 两阶段封锁发挥作用的原因 习题 9.4 用多种锁方式的封锁系统 9.4.1 共享锁...

    Perl 实例精解(第三版).pdf

    10.1.6 通过指针传送 10.1.7 自动加载 10.1.8 BEGIN和END子程序(开始和结束) 10.1.9 subs函数 练习9 子程序不可缺少 第11章 模块化、打包并发送到库 11.1 包和模块 11.1.1 类比 11.1.2 定义 ...

    XML高级编程pdf

    2.13.3 解析器基准测试 2.14 书籍目录应用程序 2.15 小结 第3章 文档类型定义 3.1 为何需要正式的结构 3.1.1 文档域 3.1.2 验证文档的有效性 3.2 编写DTD:通用原则 3.2.1 将DTD与XML文档相关联 3.2.2 基本...

    XML高级编程 (Extensible Markup Language)

    2.13.3 解析器基准测试 2.14 书籍目录应用程序 2.15 小结 第3章 文档类型定义 3.1 为何需要正式的结构 3.1.1 文档域 3.1.2 验证文档的有效性 3.2 编写DTD:通用原则 3.2.1 将DTD与XML文档相关联 3.2.2 基本...

Global site tag (gtag.js) - Google Analytics