指向变量的常指针与指向常变量的指针详细解析
常(量)指针
常指针就是我们说的指向常量的指针,顾名思义,它是用来指向常量的。
用常指针指向常变量
实际上,C++规定只能用指向常变量的指针指向常变量,普通指针指向它就会报错,原因也很容易理解,我们用普通指针指向常变量之后,有可能就会进行改变常变量数值的操作,这样做是不被允许的。
常指针的定义方法:
const 类型名 * 常指针名;
下面是它的一个简单的使用示例:
程序1.1.1
#include<iostream>
using namespace std;
int main()
{
const int i=5;//定义一个int型常变量
const int *p;//定义一个int型常指针
p=&i;//用常指针指向常变量
cout<<*p<<endl;
return 0;
}
运行结果:
如果我们使用普通指针变量来指向常变量:
程序1.1.2
#include<iostream>
using namespace std;
int main()
{
const int i=5;//定义一个常变量
int *p;//定义了一个int型指针
p=&i;//使用一般的指针指向常变量
cout<<*p<<endl;
return 0;
}
就会报错:
用常指针指向一般变量(非const型变量)
用常指针也是可以指向一般变量的,不过不可以通过常指针来更改一般变量的值,但是可以通过一般变量的变量名来修改变量的值。
下面看一个示例:
程序1.2.1
#include<iostream>
using namespace std;
int main()
{
int i=5;//定义一个一般变量
const int *p;//定义了一个常指针
p=&i;//使用常指针指向一般变量
cout<<*p<<endl;
i=10;//通过一般变量的变量名来修改值
cout<<*p<<endl;
return 0;
}
运行结果:
如果我们使用常指针来修改一般变量的值:
*p=10;
就会报错:
小结:常指针可以指向常变量和一般变量,但是都不能通过指针改变它指向的变量的值。
指针常量
指针常量是指的指针本身就是一个常变量,一经赋初值就不可以被更改。
上面已经说过,只有常指针才可以指向常变量,所以指针常量只可以指向一般变量,而且一旦赋给了初值,就不可以再更改。
定义方法:
类型名 * const 指针常量名=变量地址;
因为指针是常变量所以它在定义的时候就应该赋初值。
一个程序示例:
程序2.1
#include<iostream>
using namespace std;
int main()
{
int i=5;//定义一个一般变量
int * const p=&i;//定义了一个指针常量
cout<<*p<<endl;
*p=30;//通过指针来改变指向的变量的值
cout<<*p<<endl;
return 0;
}
运行结果:
您可能感兴趣的文章
- 04-02c语言的正则匹配函数 c语言正则表达式函数库
- 04-02c语言中对数函数的表达式 c语言中对数怎么表达
- 04-02C语言中怎么打出三角函数 c语言中怎么打出三角函数的值
- 01-10c语言求1+2+...+n的解决方法
- 01-10求子数组最大和的解决方法详解
- 01-10深入理解约瑟夫环的数学优化方法
- 01-10深入二叉树两个结点的最低共同父结点的详解
- 01-10数据结构课程设计- 解析最少换车次数的问题详解
- 01-10c语言 跳台阶问题的解决方法
- 01-10如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 01-11ajax实现页面的局部加载
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10delphi制作wav文件的方法
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10C#中split用法实例总结
- 01-10SublimeText编译C开发环境设置
- 04-02jquery与jsp,用jquery