`
synchronized_lala
  • 浏览: 41122 次
  • 性别: 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  
顶一个
学习学习

相关推荐

    第20章、指针上机指导(实践课).ppt

    - **回顾**:在本次实践课中,我们通过实际操作深入了解了指针的基本概念、操作以及如何在具体项目中应用指针技术。通过动手实践,大家不仅掌握了指针的基础知识,还学会了如何利用指针来优化代码结构和性能。 - **...

    C指针的几个案列

    #### 一、回顾指针概念 在C语言中,指针是一个非常重要的概念,它允许程序员直接控制和管理内存。指针是一种变量,其值为另一个变量的地址,也就是内存位置的直接地址。本文将通过几个具体的案例来深入探讨C语言中...

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

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

    最新二年级数学上学期期末练习测试题.pdf

    总结,这份二年级数学上学期期末练习测试题涵盖了加减法运算、数的认识与比较、简单的几何概念、时间与量的初步理解,以及实际问题解决等核心知识点。通过对这些题目的解答,学生可以系统地回顾和巩固本学期的学习...

    MFC 简单计算器 残缺版

    在修复问题时,应遵循良好的编程实践,如使用智能指针管理资源,充分考虑边界条件和异常情况,以及进行充分的单元测试以验证每个功能的正确性。 总的来说,MFC简单计算器的开发是一个涉及用户界面设计、事件处理、...

    3.1Java常用API知识测试.pdf

    在Java编程的学习过程中,掌握常用API的使用是成为一名优秀程序员的必经之路。本文将深入探讨Java中...这份资源不仅仅是对Java基础的回顾,也是对开发者技能的一个检验,无疑将成为Java学习旅程中的一个重要参考资料。

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

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

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

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

    经过测试win7可用的C语言编程工具Turbo C

    1. **了解C语言基础**:掌握变量、数据类型、控制结构、函数、指针等基本概念,是使用任何C语言编译器的基础。 2. **编译与链接**:理解编译和链接的过程,知道如何通过命令行调用编译器和链接器来生成可执行文件。...

    程序员面试逻辑题

    建议回顾数据结构(如链表、栈、队列)、算法(排序、查找等)及基本的数学原理。 #### 2. 练习典型题目 通过练习大量经典题目来提高自己的解题技巧是非常必要的。可以在网上寻找历年真题进行模拟训练,并且尝试...

    c语言经典试题6套及答案

    "c语言经典试题6套及答案"这个资源提供了这样的机会,包含了丰富的C语言题目和对应的解答,对于自我测试和巩固C语言知识大有裨益。 1. **基本语法**: 这些试题可能涵盖C语言的基础语法,如变量声明、数据类型(int,...

    2022年c语言实训心得体会例文.docx

    他给我布置的小时钟任务,让我体验了从简单到复杂的编程过程,尽管初次尝试花费了不少时间,但最终在龙哥的指导下,我明白了如何高效简洁地实现功能,这是我在课堂上学不到的宝贵经验。 此外,C语言实训还锻炼了我...

    北邮数据结构实验报告 图.pdf

    在调试分析中,讨论了调试过程中遇到的问题和解决方法,对设计与实现的回顾讨论和分析,并对算法的时空分析和改进设想。 在用户使用说明中,详细列出了每一步的操作步骤。在测试结果中,列出了测试结果,包括输入和...

    微软面试题及答案

    `search()`函数则是简单的线性搜索或二分搜索(如果队列已排序)。这些函数的具体实现细节取决于具体的应用场景和需求。 #### 题目三:堆栈与队列之间的转换 **题目描述:** 有一个堆栈`R`,从顶到底依次存放着...

    c语言试题及答案,400题,不要积分

    4. **数组与指针**:这是C语言的特色之一,试题会测试对一维、二维数组的理解,以及指针的概念、操作和应用,包括指针与数组的关系、指针的算术运算和指针作为函数参数。 5. **结构体与共用体**:C语言允许创建复杂...

    基于单片机的电子钟设计-学位论文.doc

    与传统的指针式钟表相比,数字电子钟不仅提供了更为直观、精确的时间显示,还能在许多需要时间控制的应用场景中发挥重要作用。它通过晶体振荡器来保持时间的精确度,适应了现代社会对时间管理的高要求。 在电子钟的...

    一步一步写算法C

    编写算法时,应当从最简单的例子开始,逐步增加复杂度,并伴随测试用例的编写。测试用例是确保算法正确性的重要工具,只有经过充分测试的代码,才能称得上是可靠的代码。 在实现一个简单的数组查找函数时,文章展示...

    「小算法」回文数与数值合法性检验.rar

    机器学习中,回文数检测可以作为一个简单的训练任务,用于教学或测试模型的基础能力。数值合法性检验则在数据预处理阶段起到关键作用,确保输入的数据质量,防止因异常值或错误输入导致模型训练失败或结果偏差。 在...

Global site tag (gtag.js) - Google Analytics