C++指针、引用、const

int a = 3;
int *p = &a;    //定义指针p指向变量a
*p = 4;    //*p代表a的值

int b = 5;
p = &b;    //p指向变量b
*p = 6;    //此时*p代表b的值

int c[3] = {2,5,7};
p = c;    //此时p是指向数组c的指针,具体指向数组的第一个元素,即(&c[0]/p/c)三种写法等价
int a = 3;
int &b = a;    //定义引用b为变量a的引用,即a的别名(可理解为a的“外号”)
b = 6;    //给b赋值6即给a赋值6,此时a的值变为6

引用经典用法:
void ValueExchange(int &a,int &b)
{
    int temp = 0;
    temp = a;
    a = b;
    b = temp;
}
ValueExchange(a,b);     //调用函数实现值交换,和c语言指针相比,c++的引用显然更加简便
const int a = 3;    //常量a = 3,const的含义即是被const修饰的值拒绝被修改

const int *p;
int const *p;    //两种写法等价,此时无法用*p来改变p指向的变量的值,因为*p被const所修饰

int * const p;    //此时p只能指向一个变量,之后不能指向其他变量,因为p被const修饰

const int &b;
int const &b;    //两种写法等价,&b无法被修改,即b引用的变量无法被修改,常用于上面的值交换类型函数,保护传入的变量数据的安全,拒绝被函数内部修改
时间: 2024-10-15 19:11:32

C++指针、引用、const的相关文章

深入学习 const指针,const引用

指针和引用的区别: 1.指针可以为空,引用不可以为空. 2.指针初始化后可以重新指向新对象,引用初始化以为不可以重新绑定新对象, 3.指针可以在初始化时赋值,可以初始化以后通过赋值运算符(=)赋值:引用只能在初始化时赋值. 4.指针是个实体(占内存4byte),引用只是个别名(不占内存) 5.指针sizeof是4byte,引用sizeof是绑定对象的大小. 6.指针是类型安全,引用是类型安全的. const对于指针和引用的区别: int a = 1: int b = 1: const int *

【c++基础】const、const指针、const引用

一.const常量 声明时必须同时初始化(和“引用”一样) 二.const指针 三.const引用 引用本身和引用的对象都是const对象,可以用字面值来赋给const引用(普通引用则不行) 1 const B=1024; 2 const refB=B; //const变量的声明和初始化 3 4 const int &r=42;//字面值给const赋值 5 int &r2=42;//错 [c++基础]const.const指针.const引用

C++中引用、指针与const之间的爱恨情愁

学过C语言基础的肯定都知道变量和数据类型是再简单不过的知识,然而这个基础中确有几个泥潭,稍有不慎就粉身碎骨--编程受阻,面试被刷.其中一个就是引用.指针和const,以及相互之间剪不断理还乱的关系.今天我们就来理一理. 1.引用是个什么鬼 1.1引用的概念 引用是为对象另外起的一个名字,也就是别名而已.那什么是对象呢?注意这里说的对象和面向对象里的对象不是一回事.这里的对象是内存的一块区域,它具有某种类型,变量是命名了的对象.可以这么认为,引用与对象简单的关系就像姓名和本人.姓名可以多换几个,但

等式转换(熟悉一下链表,指针引用)

1 /***************************************************************************** 2 *输入一个正整数X,在下面的等式左边的数字之间添加 + 号或者 - 号,使得等式成立. 3 *1 2 3 4 5 6 7 8 9 = X 4 *比如: 5 *12 - 34 + 5 - 67 + 89 = 5 6 *1 + 23 + 4 - 5 + 6 - 7 - 8 - 9 = 5 7 *请编写程序,统计满足输入整数的所有整数个数

二叉查找树-优化版,使用了指针引用

1 //与上一次实现不同,这里使用了大量的指针引用, 2 //因此节省了一个指向父节点的指针 3 #include<iostream> 4 #include<vector> 5 #include<ctime> 6 #include<cstdlib> 7 8 using namespace std; 9 10 template<class T> 11 class BinarySearchTree 12 { 13 private: 14 struct

位运算+引用+const+new/delete+内联函数、函数重载、函数缺省参数

一.位运算 应用: 1.判断某一位是否为1 2.只改变其中某一位,而保持其它位都不变 位运算操作: 1.& 按位与(双目): 将某变量中的某些位清0(与0位与)且同时保留其它位不变(与1位与):获取某变量中某一位(与其位与后判断是否为该数) 2.|  按位或(双目): 将某变量中的某些位置1(与1位或)且保留其它位不变 3.^  按位异或(双目): 将某变量中的某些位取反(与1异或)且保留其它位不变 异或运算特点: 如果 a^b=c,那么就有 c^b = a以及c^a=b.(穷举法可证---用于

传指针和传指针引用的区别/指针和引用的区别(本质)

转自:http://blog.sina.com.cn/s/blog_673ef8130100imsp.html 指针传递参数本质上是值传递的方式,它所传递的是一个地址值.值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本.值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值.(这里是在说实参指针本身的地址值不会变) 而在引用传递过程中,被调函数的形式参数虽然也作为局

JSON的put方法是一个指针引用

JSON的put方法是一个指针引用; import org.json.simple.JSONObject; JSONObject a=new JSONObject(); a.put("date","2015-11-08");a.put("time","15:48:28"); a.toJSONString() --> {"date":"2015-11-08","time&q

const与指针修改const对象

我们都知道const对象作用是声明变量为常量,在程序中除非显示转换,否则无法修改. 本文针对显示修改的情况,提醒了一种隐式的错误,以及解决办法. 考虑下面的代码: #include<iostream> int main(){ const int a=0; int *p=const_cast<int*>(&a);//&a返回int *,const_cast<int*>显示转换为int*. *p =1; int b=*p; int c=a; std::cou

C++指针与const

在C++中,const修饰符一般用于修饰常量.常量在定义的时候必须初始化,而且值一旦定义之后就不能修改,这样就能保证常量的值在程序运行过程中不会发生变换. 1.指向const对象的指针 指向const对象的指针本身的指向可以发生变换,但是不可以通过该指针修改所指向变量的值.指向const对象的指针在定义的时候无需初始化,而且这种类型的指针也可以指向普通变量,只不过不能通过该指针修改对应变量的值,即便对应变量不是常量.指向常量的指针在类型标识符前必须有const修饰符修饰,否则编译不通过. 指向c