c++引用问题

1、整型变量的引用

程序如下:

#include <stdlib.h>

#include <iostream>

using namespace std;
int main()
{
int a=10;
int &b=a;
 b=200;//此处变量赋值不能int ,否则重定义
cout<<"此时a的值是;"<<a<<endl;
 a=100;
cout <<"此时b的值是:"<<b<<endl;
system("pause");
return 0;
}

标明,引用无非就是给已经出现的变量定义了一个别名。所以在程序执行的过程中,对原来的变量做何种操作和对于他唯一的别名做什么操作,其实是别无二致的事情,因为本质上,两者是一种东西。

2、结构中的引用

#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct{
int x;
int y;
}COORD;//结构体的定义,这是结构体的名字、
int main(){
COORD c;//结构体类型的c.
COORD &c1=c;//数据类型就是结构体名,然后按格式&别名
c1.x=10;
c1.y=29;
cout<<c.x<<endl<<c.y<<endl;
system("pause");
return 0;
}

运行结果:

注意的问题:结构体的定义、结构体引用时,就结构体名就相当于数据类型。

3、指针中的引用

#include <stdlib.h>
#include <iostream>
using namespace std;

int main()
{
	int a=10;
	 int *p=&a;//定义一个指针p,它指向a.注意&
	 int *&q=p;指针类型引用的格式:数据类型 * & 别名=原来指针
	*q=5;//注意不能前面再加数据类型,否则出现重复定义
	cout <<a<<endl;

	system("pause");
	return 0;
}

运行结果:

4、引用后的别名作为函数参数

代码:

#include <stdlib.h>
#include <iostream>
using namespace std;
//声明一个具有交换功能的函数
void fun(int &a,int &b);//a,b分别是实际参数的别名,作为形参使用,注意起别名的时候一定要加数据类型的啊

int main()
{
	int x=10;
	int y=20;
	cout <<x<<","<<y<<endl;
	 fun(x,y);
	cout<<x<<","<<y<<endl;

	system("pause");
	return 0;
}
void fun (int &a,int &b){

	int c=0;
	c=a;
	a=b;
	b=c;
	};
运行结果:

今天主要学习了c++的几种引用的类型,搞清楚没种引用相应的格式类型,理解也很容易。今天的学习到此为止。

时间: 2024-11-05 13:43:30

c++引用问题的相关文章

.net 工程中引用出现感叹号

在工程中引用出现感叹号,有两个原因 原因1:  这是由于之前引用的Dll文件不见了. 右键有感叹号的项,然后选择 "属性" 里边有一个路径属性 这个路径就是之前这个Dll文件的路径,现在这个文件不在了,你需要找到现在这个文件的路径 右键有感叹号的项,然后选择"移除" 右键"引用",选择添加引用,然后选择那个不在的dll的真实路径 其他的项用相同的方式处理 原因2:可能是引用的.Net版本高于了当前工程的.Net版本 更改所引用的工程文件的.Net

C# 动态生成WebService,无需添加引用

C#项目调用WebService是很常见的现象,但一旦修改链接地址就需要重新更新引用很是麻烦,这里跟大家分享一个通过地址,无需添加引用动态生成Webservice的小方法 方法类: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.ServiceModel; 6 using System.ServiceModel.Channels

C++学习笔记----2.4 C++引用在本质上是什么,它和指针到底有什么区别

从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量). 在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的: 指针传递参数本质上是值传递的方式,它所传递的是一个地址值.值传递过程中,被调

DLL引用摘录

最近使用DllImport,从网上google后发现,大部分内容都是相同,又从MSDN中搜集下,现将内容汇总,与大家分享. 大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这些功能. DllImport是System.Runtime.InteropServices命名空间下的一个属性

PHP中引用类的属性

在一个类中,可以访问一个特殊的指针--$this.如果当前类的一个属性为$attribute,则当在该类中通过一个操作设置或访问该变量时,可以使用$this->attribute来引用. class classname { public $attribute; function operation($param) { $this->attibute = $param echo $this->attribute; } }

使用软引用和弱引用防止内存溢出

下面以使用软引用为例来详细说明.弱引用的使用方式与软引用是类似的. 假设我们的应用会用到大量的默认图片,比如应用中有默认的头像,默认游戏图标等等,这些图片很多地方会用到.如果每次都去读取图片,由于读取文件需要硬件操作,速度较慢,会导致性能较低.所以我们考虑将图片缓存起来,需要的时候直接从内存中读取.但是,由于图片占用内存空间比较大,缓存很多图片需要很多的内存,就可能比较容易发生OutOfMemory异常.这时,我们可以考虑使用软引用技术来避免这个问题发生. 首先定义一个HashMap,保存软引用

引用传递

引用传递的本质就在于别名,而这个别名只不过是放在了栈内存之中,既:一块堆内存可以被对个栈内存所指向 举例: Person per1 = new Person(); per1.name = "小于子"; per1.age = 30; Person2 oper2 = per1; oper2.name = "狗剩"; 在程序开发中,所谓的垃圾空间指的是没有任何栈内存指向的堆内存空间,所有的垃圾空间将不定期被java的垃圾收集器(GC.Garbage Collector)进

this的引用

每个对象都可以使用this关键字引用本身.如果一个类的方法需要访问该类本身的成员变量或其他方法,就应该使用this,其实在引用的学习中我们已经接触到额this的引用,只不过那时不懂,在我们使用引用的时候,我们没有显示地添加this引用,呢么编译器会自动的为 我们添加上,我们尅将this应用作为参数给一个方法,通过这种方式一个对象可以将它本身的引用传给其他对象. 如果一个构造器用this关键字来调用本类中的其他构造器,那么这个this语句必须是本构造器的第一行否则,会产生一个编译错误.在Java中

Android中的WeakReference 弱引用

WeakReference 弱引用 定义:弱引用,与强引用(我们常见的引用方式)相对:特点是:GC在回收时会忽略掉弱引用对象(忽略掉这种引用关系),即:就算弱引用指向了某个对象,但只要该对象没有被强引用指向,该对象也会被GC检查时回收掉. 强引用实例自然不会被GC回收! 如何引出弱引用?弱引用的实际用途是什么? 什么是内存泄漏?Java使用有向图机制,通过GC自动检查内存中的对象:如果GC发现一个或一组对象为不可达的状态,则将该对象从内存中回收.也就是说:一个对象不被任何引用所指向,则该对象会在

MVC,MVP 和 MVVM 的图示 引用地址(http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html)

分类: 开发者手册 MVC,MVP 和 MVVM 的图示 作者: 阮一峰 日期: 2015年2月 1日 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了. 昨天晚上,我读了<Scaling Isomorphic Javascript Code>,突然意识到,它们的区别非常简单.我用几段话,就可以说清. (题图: