武汉PHP培训
达内武汉民大中心

18062071755

热门课程

常量指针与指针常量傻傻分不清楚

  • 时间:2017-05-31 13:54
  • 发布:武汉PHP培训
  • 来源:达内新闻

今天,达内武汉php培训的小编将要给大家带来的是常量指针与指针常量傻傻分不清楚。

常量指针是指--指向常量的指针,顾名思义,就是指针指向的是常量,即,它不能指向变量,它指向的内容不能被改变,不能通过指针来修改它指向的内容,但是指针自身不是常量,它自身的值可以改变,从而指向另一个常量。

指针常量是指--指针本身是常量。它指向的地址是不可改变的,但地址里的内容可以通过指针改变。它指向的地址将伴其一生,直到生命周期结束。有一点需要注意的是,指针常量在定义时必须同时赋初值。

常量指针格式:const int *[pointer];

指针常量格式:int *const [pointer];

两种都是对指针和指针指向的变量的一种保护措施:

常量指针:不能修改指针指向的地址中的值

float cp = 12.21;

const float *cpptr = &cp;  //常量指针,只能读取地址中的值,而不能修改它;

//但这个地址值本身可以被修改

float *fcpptr = &cp;

cout << "Address of cp: " << cpptr << endl;

cout << "Data of cp: " << *cpptr << endl;

//*cpptr += 10.0; //compile error

cpptr += 1;

指针常量:不能修改指针本身的值,即指针指向的地址值

float pc = 23.32;

float *const pcptr = &pc; //指针常量,指针本身(一个地址值)是一个常量,不能被修改

//但是可以通过间接引用(*pointer)修改内存中的数据

cout << "Address of pc: " << pcptr << endl;

cout << "Data of pc: " << *pcptr << endl;

*pcptr += 10.0;

cout << "New Data of pc: " << *pcptr << endl;

//pcptr +=1; //Error:不能给常量赋值

//float tst = 10.0;

//float *tstptr = &tst;

//pcptr = tstptr; //Error: 不能给常量赋值

指针跟引用都能修改实参,但使用指针更加危险,因为引用只是指向一个特定的实参,但是指针只是指向一个地址值,地址里存的数值被其他方式改变了,再通过指针间接修改里面的数值时,很可能修改了不是你想要它改变的数值。

因此当需要参数时,能用引用传递实参的时候就用引用,需要用到指针传递实参,又不需要修改它的时候,就用常量指针来传递

指针函数:返回一个指针的函数

需要注意的是返回的指针变量必须是一个在该函数结束运行后,仍然有效的地址值。即,不能是在函数里新声明的变量。

以上就是达内武汉php培训的小编在今天的分享内容,通过上面的讲解,是否你能很清晰地分辨出常量指针和指针常量的区别与联系呢?有疑问欢迎咨询美国上市公司,达内专业的老师将带领大家去学习,抢限量的免费试听课程就看谁的速度快啦!

马上预约七天免费试听课

姓名:

电话:

上一篇:武汉php培训机构:PHP 数组遍历方法
下一篇:php的这几个操作符你分清楚了吗?

php新手必读书物

php运算符的优先级

武汉php培训:优化PHP代码的建议

php到底做什么?

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊