服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 指向变量的常指针与指向常变量的指针详细解析

指向变量的常指针与指向常变量的指针详细解析

2021-01-07 14:27C语言教程网 C/C++

刚接触到指针时,关于指向变量的常指针和指向常变量的指针容易混淆,所以整理下,希望能够帮助自己也帮助到大家

常(量)指针
常指针就是我们说的指向常量的指针,顾名思义,它是用来指向常量的。

用常指针指向常变量
实际上,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;
}


运行结果:

指向变量的常指针与指向常变量的指针详细解析

延伸 · 阅读

精彩推荐
  • C/C++C语言main函数的三种形式实例详解

    C语言main函数的三种形式实例详解

    这篇文章主要介绍了 C语言main函数的三种形式实例详解的相关资料,需要的朋友可以参考下...

    ieearth6912021-05-16
  • C/C++深入C++拷贝构造函数的总结详解

    深入C++拷贝构造函数的总结详解

    本篇文章是对C++中拷贝构造函数进行了总结与介绍。需要的朋友参考下...

    C++教程网5182020-11-30
  • C/C++c/c++内存分配大小实例讲解

    c/c++内存分配大小实例讲解

    在本篇文章里小编给大家整理了一篇关于c/c++内存分配大小实例讲解内容,有需要的朋友们可以跟着学习参考下。...

    jihite5172022-02-22
  • C/C++C语言实现双人五子棋游戏

    C语言实现双人五子棋游戏

    这篇文章主要为大家详细介绍了C语言实现双人五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    两片空白7312021-11-12
  • C/C++关于C语言中E-R图的详解

    关于C语言中E-R图的详解

    今天小编就为大家分享一篇关于关于C语言中E-R图的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    Struggler095962021-07-12
  • C/C++c/c++实现获取域名的IP地址

    c/c++实现获取域名的IP地址

    本文给大家汇总介绍了使用c/c++实现获取域名的IP地址的几种方法以及这些方法的核心函数gethostbyname的详细用法,非常的实用,有需要的小伙伴可以参考下...

    C++教程网10262021-03-16
  • C/C++使用C++制作简单的web服务器(续)

    使用C++制作简单的web服务器(续)

    本文承接上文《使用C++制作简单的web服务器》,把web服务器做的功能稍微强大些,主要增加的功能是从文件中读取网页并返回给客户端,而不是把网页代码...

    C++教程网5492021-02-22
  • C/C++OpenCV实现拼接图像的简单方法

    OpenCV实现拼接图像的简单方法

    这篇文章主要为大家详细介绍了OpenCV实现拼接图像的简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    iteye_183805102021-07-29