#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
引用与指针的区别:
1 引用被创建时必须被初始化,而指针不必
2 引用一旦被初始化则不能改变引用的对象,而指针可以随时改变指向的对象;
3 引用不能为NULL,而指针可以;
引用传递:
被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。
分享到:
相关推荐
- **回顾**:在本次实践课中,我们通过实际操作深入了解了指针的基本概念、操作以及如何在具体项目中应用指针技术。通过动手实践,大家不仅掌握了指针的基础知识,还学会了如何利用指针来优化代码结构和性能。 - **...
#### 一、回顾指针概念 在C语言中,指针是一个非常重要的概念,它允许程序员直接控制和管理内存。指针是一种变量,其值为另一个变量的地址,也就是内存位置的直接地址。本文将通过几个具体的案例来深入探讨C语言中...
16_两个辅助指针变量挖字符串测试框架搭建 18_作业 源码及文档 01_课程回顾 02_两个赋值指针变量挖字符训练_第3种内存模型_传智扫地僧 03_多级指针的野指针问题(释放问题)_传智扫地僧 04_学员作业点评_典型错误...
总结,这份二年级数学上学期期末练习测试题涵盖了加减法运算、数的认识与比较、简单的几何概念、时间与量的初步理解,以及实际问题解决等核心知识点。通过对这些题目的解答,学生可以系统地回顾和巩固本学期的学习...
在修复问题时,应遵循良好的编程实践,如使用智能指针管理资源,充分考虑边界条件和异常情况,以及进行充分的单元测试以验证每个功能的正确性。 总的来说,MFC简单计算器的开发是一个涉及用户界面设计、事件处理、...
5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 5.17 说真的,真有机器用非零空指针吗,或者不同类型用...
5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 60 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 60 5.17 说真的,真有机器用非零空指针吗,或者不同...
1. **了解C语言基础**:掌握变量、数据类型、控制结构、函数、指针等基本概念,是使用任何C语言编译器的基础。 2. **编译与链接**:理解编译和链接的过程,知道如何通过命令行调用编译器和链接器来生成可执行文件。...
建议回顾数据结构(如链表、栈、队列)、算法(排序、查找等)及基本的数学原理。 #### 2. 练习典型题目 通过练习大量经典题目来提高自己的解题技巧是非常必要的。可以在网上寻找历年真题进行模拟训练,并且尝试...
"c语言经典试题6套及答案"这个资源提供了这样的机会,包含了丰富的C语言题目和对应的解答,对于自我测试和巩固C语言知识大有裨益。 1. **基本语法**: 这些试题可能涵盖C语言的基础语法,如变量声明、数据类型(int,...
他给我布置的小时钟任务,让我体验了从简单到复杂的编程过程,尽管初次尝试花费了不少时间,但最终在龙哥的指导下,我明白了如何高效简洁地实现功能,这是我在课堂上学不到的宝贵经验。 此外,C语言实训还锻炼了我...
在调试分析中,讨论了调试过程中遇到的问题和解决方法,对设计与实现的回顾讨论和分析,并对算法的时空分析和改进设想。 在用户使用说明中,详细列出了每一步的操作步骤。在测试结果中,列出了测试结果,包括输入和...
`search()`函数则是简单的线性搜索或二分搜索(如果队列已排序)。这些函数的具体实现细节取决于具体的应用场景和需求。 #### 题目三:堆栈与队列之间的转换 **题目描述:** 有一个堆栈`R`,从顶到底依次存放着...
4. **数组与指针**:这是C语言的特色之一,试题会测试对一维、二维数组的理解,以及指针的概念、操作和应用,包括指针与数组的关系、指针的算术运算和指针作为函数参数。 5. **结构体与共用体**:C语言允许创建复杂...
编写算法时,应当从最简单的例子开始,逐步增加复杂度,并伴随测试用例的编写。测试用例是确保算法正确性的重要工具,只有经过充分测试的代码,才能称得上是可靠的代码。 在实现一个简单的数组查找函数时,文章展示...
机器学习中,回文数检测可以作为一个简单的训练任务,用于教学或测试模型的基础能力。数值合法性检验则在数据预处理阶段起到关键作用,确保输入的数据质量,防止因异常值或错误输入导致模型训练失败或结果偏差。 在...
- 确保在测试过程中,万用表的指针变化符合预期,否则可能是IGBT存在问题或万用表出现故障。 #### 四、总结 通过上述步骤,我们可以有效地利用万用表来检查IGBT的好坏。这种简单实用的方法不仅适用于IGBT,还可以...