C++中的常量、引用和指针

原创 2017年01月02日 21:16:20
#include<winsock2.h>

#pragma comment (lib,"Ws2_32.lib")

#include<iostream>
#include<fstream>

using namespace std;

int main()
{
	int i = 40;
	int k = 20;
	const int j = 30;
	const int h = 10; 
	
	
	int *p1 = &i;		// 正确,一般的变量使用法 
	int &r1 = i;		// 正确,一般的引用使用法 
		
	const int *cp1 = &i;	// 正确,但是不能通过cp1修改i的值
	int const *p = &i;		// 正确,功能和 const int *p = &i; 一样	
	const int &cr1 = i;		// 正确,但是不能通过cr1修改i的值,这个引用常简称常量引用(不准确),即“对const的引用” 。 
							// 因为此时指针和引用“自以为自己指向的是常量” ,因为const修饰的是一个对象,
							// 如int *const p = &i;这个指针p是常量指针,但是引用并不是一个对象,所以
							// int const &r = i;的写法是错误的,所以实际上并不存在常量引用
	int const &r = i;		// 正确,功能和 const int &r = i; 一样 
	
	
	
	// int *p2 = &j;		// 错误,j是常量,int是变量,要把int改为const int 
	// int &r2 = j;			// 错误,同上,要把int改为const int 
	
	int const *cp2 = &j;	// 正确,不能通过cp2修该j的值
							// cp2还可以指向其他的int类型变量或const int类型;
							// 但是还是不能通过cp2来修改其他变量的内容
							// 如
							//   cp2 = &h;		// 正确 
							//   cp2 = &i;		// 正确 
							//   *cp2 = 10;		// 错误 
	const int &cr2 = j;		// 正确,不能通过cr2修改j的值,引用只能绑定一个对象。这是引用的特性。
	
	
	// 以下是常量指针的内容: 
	// 上面的指针的内容都是可以改的(注意是指针的内容,不是指针所指向值得内容),
	// 因而可以修改指针再指向其他变量,而常量指针的内容不变,一旦初始化就不能再指向其他常量或者非常量的地址
	
	 int *const cpcp = &i;			// 正确,常量指针的一般用法
	 // int const *cpcp1 = &i;			// 正确,但cpcp1不是常量指针了, 和22行的是一样的。 
	 const int *const cpcp2 = &i;	// 正确,自以为指向的是常量,而且不能再指向其他对象。 
	 // const int const * cpcp3 = &i;	// 错误,const重复使用,因为出现了两个底层const
	 
	 
	cout<<endl;
	return 0; 
}

C++中 常量引用、指向常量的指针、常量指针的区别

先初步了解引用、指针的一些注意事项。 引用并非对象 引用必须初始化 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起 类型要严格匹配 int &a = 10; ...
  • Rueing839
  • Rueing839
  • 2015年09月13日 17:11
  • 1601

C++ - const常量与指针和引用之间的关系

const常量1、const常量必须在定义的时候初始化,且不能修改。 2、const常量的默认类型为int类型。 3、#define是一个预处理器编译指令。该编译指令告诉预处理器,在程序中来查找并...
  • ko_tin
  • ko_tin
  • 2016年11月15日 23:36
  • 681

C++中指针和引用的区别(超详细)

指针和引用主要有以下区别: 引用必须被初始化,但是不分配存储空间。指针不声明时初始化,在初始化的时候需要分配存储空间。 引用初始化后不能被改变,指针可以改变所指的对象。 不存在指向空值的...
  • weikangc
  • weikangc
  • 2015年11月10日 17:40
  • 979

C++小知识之指针和引用的区别

温故而知新,指针和引用的概念,大学时都已熟知,实际用的时候往往又有些疑惑,故深入探究一下。 从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向...
  • xdrt81y
  • xdrt81y
  • 2014年01月08日 17:24
  • 9319

c++常量引用

使用引用而非常量引用极大的限制了函数所能接受的实参的类型.因为我们不能把const对象字面值或者需要类型转换的对象传递给普通的引用形参.1、这种错误绝不像看起来这么简单,它可能造成出人意料的结果.例如...
  • drdairen
  • drdairen
  • 2016年11月16日 16:32
  • 931

C++引用详解及与指针异同点

一、引用详解 引用:就是对某一变量(或对象)取一个别名,对变量的引用 的操作与对变量本身直接操作完全一样。 引用的声明:类型标识符 &引用名=目标变量名;   如下:定义变量a的引用aa,即别名。  ...
  • ljheee
  • ljheee
  • 2016年08月12日 11:22
  • 1141

c++primer 第五版 指向常量的指针和常量指针

c++ primer中对于“常量指针”的定义和网上的版本相反,而且删去了"指针常量"的概念,引入了一个新的概念——"指向常量的指针”,但各种类型的含义还是一致的,只是叫法不一样了。举例: int a;...
  • moses1213
  • moses1213
  • 2015年05月21日 21:18
  • 1477

C++ 常量指针或者常量引用作为函数参数传递的原因

1.当传递较大的数据结构作为参数时,用引用或者指针作为函数参数可以节省 一个复制的过程,提高效率。 看别人代码经常这样使用。想想为啥void Fun1(const classA&); void Fun...
  • kfbyj
  • kfbyj
  • 2013年07月19日 13:34
  • 2763

C++的常量引用

我们先来看一个简答的程序: #include using namespace std; int main() { int &a = 1; // error cout ...
  • stpeace
  • stpeace
  • 2014年11月06日 23:20
  • 6264

java中的引用和C++中的指针的区别

1.类型:引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。2.所占内存: 引用声明时没有实...
  • b271737818
  • b271737818
  • 2009年02月24日 13:30
  • 8971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++中的常量、引用和指针
举报原因:
原因补充:

(最多只允许输入30个字)