大家好,今天来为大家分享C++指针与引用全面解析:深入理解指针常量与常量指针的一些知识点,和的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
(1)引用不能为空,但指针可以为空。正如前面提到的,引用是对象的别名。如果引用为空,——个对象都不存在,怎么会有别名!因此,在定义引用时,必须对其进行初始化。
(2) 引用不能改变其指针并保持附加到对象直到死亡;但是指针可以改变它的指针并指向其他对象。注意:虽然引用不能改变指针,但它可以改变初始化对象的内容。比如++操作,对引用的操作直接反映了指向的对象,而不是改变指针;而对指针的操作将使指针指向下一个对象,而不是改变所指向对象的内容。请参阅下面的代码:
#includeusing命名空间std;
int main(int argc,char** argv)
{
整数i=10;
int ref=i;
参考++;
cout"i="对ref的++操作直接体现在指向的变量上。将"ref=j" 重新分配给引用变量ref 不会改变ref 的点。它仍然指向i,而不是j。当然,此时对ref进行++操作不会影响j。如果这些都是指针的话,情况就会大不一样了。请自行实验。输出如下:
引用的大小就是指向的变量的大小,因为引用只是一个别名;指针是指针本身的大小,4个字节。 int main()
{
字符串str="123456";
字符串str_ref=str;
字符串*str_ptr=str;
cout"str.size="引用比指针更安全。引用是安全的,因为不存在空引用,并且一旦引用被初始化为指向一个对象,就无法将其更改为对另一对象的引用。对于指针来说,它可以随时指向其他对象,而且不能初始化,也不能为NULL,所以不安全。虽然const指针不能改变其指向,但仍然存在空指针,并且可能会产生野指针(即多个指针指向一块内存,释放一个指针后,其他指针都变成野指针)。指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名,引用不改变指向。
2、常量指针、常量引用、指针常量
2.1常量指针
常量指针:指向常量的指针。在指针定义语句的类型前添加const,表示所指向的对象是常量。
整数i=10;
常量int* p=i;
*p=20; //错误的
我=20;
算我结束; //20
cout (*p) endl; //20 常量指针定义"const int*pointer=a" 告诉编译器* 指针是一个常量, * 指针不能作为左值进行操作。但是可以通过修改i的值来修改*p的值。
2.2常量引用
常量引用:指向常量的引用。在引用定义语句的类型前添加const,表示所指向的对象是常量。与指针一样,您不能使用引用来重新分配所指向的变量。
整数i=10;
常量int ref=i;
参考=20; //错误的
我=20;
计算参考结束; //20 可以将ref理解为常量,不能直接修改,但是可以通过修改i的值来修改ref的值
2.3 指针常量
在指针定义语句中的指针名称前添加const,表示指针本身是常量。指针常量在定义时必须初始化!这是参考文献固有的属性。引用指针定义语句的引用名前不需要加const。
int* 常量p; //错误,必须在声明的同时初始化
整数b=10;
int* const 指针=b; //正确的
整数c=20;
指针=c; //错误
*指针=c;
c=30;
计算b结束; //20
cout *指针endl; //20
cout c endl; //30 指针常量定义"int* const point=b" 告诉编译器,pointer是常量,不能作为左值操作,但允许修改间接访问值,即*pointer可以修改。 (指针是固定地址,不能修改,但是放在这个地址的值总是可以修改的,并且指针不能再指向其他数据)
2.4 常量指针常量
int c=10;
const int *const 指针=c;
c=20;
cout *指针endl; //20 常量指针常量:指向常量的指针常量。可以定义一个指向常量的指针常量,定义时必须对其进行初始化。常量指针常量定义"const int* const pointer=c"告诉编译器pointer和*pointer都是常量,它们都不能作为左值进行操作。
3.题目
const char * arr="123"; //不可修改,"123"放置在静态存储区
字符* brr="123"; //"123" 不能修改并放入静态存储区
【C++指针与引用全面解析:深入理解指针常量与常量指针】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
C++ 程序员必备的基础知识啊!
有19位网友表示赞同!
我对指针的概念一直有点迷茫,这篇文章应该能帮我理清楚!
有13位网友表示赞同!
学习新语言最怕不知道哪里入手,讲解详细的教程真好用
有16位网友表示赞同!
之前看过点关于引用的内容,现在想更深入学习一下
有17位网友表示赞同!
指针常量和常量指针的区别在哪里啊?我记得好像比较容易混淆
有10位网友表示赞同!
这方面的内容一般都是考试重点,需要好好复习一遍
有10位网友表示赞同!
C++ 的操作方法真的好多,总觉得有点摸不着北...
有18位网友表示赞同!
文章写得很容易理解,关键点解释得很清楚!
有16位网友表示赞同!
指针和引用在实际编程中经常用到吧?
有12位网友表示赞同!
看来要多练习才能掌握这些概念,否则容易忘记。
有14位网友表示赞同!
感觉C++学习路径真的很复杂,一步一个坑...
有14位网友表示赞同!
这篇文章刚好对标我的知识缺口,感谢分享!
有7位网友表示赞同!
指针的概念听起来就比较抽象,需要慢慢理解。
有15位网友表示赞同!
学习代码确实是一步一步来,不能急于求成。
有13位网友表示赞同!
这个标题看起来就很专业的样子...
有15位网友表示赞同!
希望这篇教程能帮我解决一些编程难题!
有9位网友表示赞同!
C++真强大啊,指针和引用都应用得如此灵活!
有11位网友表示赞同!
学习编程就像开辟新大陆,总有全新的发现!
有15位网友表示赞同!
分享这种干货真的很棒!大家赶紧去看看吧。
有6位网友表示赞同!
感觉C++真的需要多练才能驾驭。
有15位网友表示赞同!