在c++中可以声明指向void类型的指针,指向void类型的指针称为void指针,此外,在声明指针时,还可以用关键字const进行修饰,用关键字const修饰的指针称为const指针。
1、void指针
一般来说,只能用指向相同类型的指针给另一个指针赋值,而在不同类型的指针之间进行赋值是错误的。
//***********************************************************
int a,b;
int *p1=&a,*p2=p1;   //it's right
int a;
int *p1=&a;
double *p2=p1;       //it's wrong
//***********************************************************
注意:上述语句中的两个指针p1,p2指向的类型不同,因此,除非进行强制类型转换,否则它们之间不能相互赋值
void指针是一个特例,C++语言允许使用空类型(void)指针,即不指定指向一个固定的类型,其定义格式为:
void *p
他表示指针变量p不指向一个确定的类型数据,它的作用是用来存放一个地址,void指针它可以指向任何类型的c++数据,也就是说,可以用任何类型的指针直接给void指针赋值。不过,如果需要将void指针的值赋值给其他类型的指针,则需要进行强制类型转换。比如:
int a;
int *p1=&a;
void *p2=p1;
int *p4=(int *)p2;
2、const指针
如果在指针定义前加上关键字const,就包含一些特殊含义,而关键字const放在不同的位置表示的意义也不相同,主要如下:
关键字const放在指针类型前,就是声明一个指向常量的指针。(const *p)此时,在程序中不能通过指针来改变它所指向的值,但是指针本身的值可以改变,即指针可以指向其他数据。
关键字const放在“*”号和指针名之间,就是声明一个指针常量(也称常指针)(* const p)。因此,指针本身的值不可以改变,也即它不能再指向其他数据,但它所指向的数据的值可以改变。
在指针类型前和“*”号和指针名之间都加关键字const,(const * const p),则就是声明一个指向常量的指针常量,指针本省的值不可以改变,它所指向的值也不能通过指针改变。
//*********************************************
#include <iostream>
using namespace std;
int main()
{
int a=1;
int *p1=&a;
void *p2=p1;
int *p3=(int *)p2;
cout<<"*p3= "<<*p3<<endl;
const int *p4;         //A pointer to a pointer constant
p4=&a;
int * const p5=&a;     //A pointer constant
const int * const p6=&a;//A pointer to a constant pointer constant
cout<<"*p5= "<<*p5<<endl;
cout<<"*p6= "<<*p6<<endl;
cout<<"p4= "<<*p4<<endl;
cout<<"p4= "<<p4<<endl;
return 0;
}
//***************************************************    

转载于:https://blog.51cto.com/yuzhou133/457031

c++中的void指针和const指针相关推荐

  1. 如何区分“指向const对象的指针”和“const指针”?

    const是C++中引入的一个新的关键字,它为C++编程带来了很大的方便.指向const对象的指针和const指针是两个名字很接近的概念,对于初学者来说非常容易搞混,这里对它们进行区分. 指向cons ...

  2. C++之指向const对象的指针和const指针

    1.指向const对象的指针 我们可以通过指针来修改其所指对象的值,但如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针也是const类型. ...

  3. C++指向const对象的指针和const指针

    1.指向const对象的指针 我们可以通过指针来修改其所指对象的值,但如果指针指向的是const对象,则不允许使用指针来改变其所指的const值.C++要求指向const对象的指针也是const类型. ...

  4. 函数指针、函数返回指针、const指针、指向const指针,指向const的const指针。

    ①函数指针 函数指针是指向函数的指针变量. 因而"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所 ...

  5. const与指针:指向const的指针与const指针的区别

    指针,可以说是C语言编程的掌上明珠,而将const应用于指针,会产生一些挺微妙的现象. 指向const的指针 第一种用法是令指针指向一个常量,称之为指向const的指针,可以防止使用该指针修改所指向对 ...

  6. C++ 指针和const指针赋值

    一 简单示例 int a; const int c_a = 1;int* p; p = &a; p = &c_a; // error 即非const指针不能指向const数据(数据为非 ...

  7. 【C和指针】const指针

    一,入门 const 指针 指针指向的内容不能变,指针可以改变指向 指向const的指针 指针不可以改变指向,指针指向内容可以变 #include "stdio.h" int ma ...

  8. 指向const的指针和const指针

    如何区分 1.const的右边是指针类型,则指针是const,即const指针:const的右边是整型类型,则该类型是const,即指向const的指针: 2.指向const的指针可以不用初始化,因为 ...

  9. void * 指针和const 指针

    1.void * 是不能进行运算的,例如void *p  p++; 这2个值是没有任何规律的. 2 .printf的时候打印void *p 指向的数据,必须强制类型转换,因为编译器不知道取地址多少位. ...

最新文章

  1. linux 文件管理 教程,Linux文件管理
  2. rust怎么用items刷东西_装修贷卡怎么刷?不同银行的用不同的POS机刷才对
  3. springboot(十八):使用Spring Boot集成FastDFS
  4. 单独的plsql链接数据库
  5. Linux下源码编译安装Python3
  6. 【Flutter】Flutter 开发环境搭建 ( 2021年08月25日 补充最新资料 | 最新安装教程 )
  7. String字符串相等判断
  8. JS实现的ajax发送数据重复
  9. excel批量更改超链接_excel超链接应用:快速生成目录的几个方法-上
  10. 从 Ops 到 NoOps,阿里文娱智能运维的关键:自动化应用容量管理
  11. DevExpress 创建EXCEL
  12. 冒泡排序c语言程序,冒泡排序(C语言实现)
  13. 字节全栈工程师亲自整理的40个前端练手项目
  14. Inspinia Admin 2.5 All_Full_Version
  15. 完整的网络安全解决方案
  16. mysql 修改校对规则,整合MYSQL校对规则
  17. 编程学习应用 Growth 发布 3.0,在碎片时间里练习
  18. 利用NCBIdatasets批量下载大规模生信数据集
  19. 微信气泡主题设置_微信要怎么设置气泡?华为手机怎样改微信的气泡和主题方法介绍...
  20. 制作U盘启动盘(无广告)

热门文章

  1. python redis事务_python redis事务源码及应用分析
  2. 计算机配置中无可移动设备访问,USB连接正常,但是我的电脑中不显示可移动 – 手机爱问...
  3. 好看的linux操作系统,Deepin 20 - 外媒称它是最漂亮的Linux操作系统
  4. windows一键安装web环境全攻略(win2008)
  5. Apache 内容动态缓冲模块 mod
  6. CentOS 7配置LNMP开发环境及配置文件管理详解
  7. python 第三方库 工具
  8. AngularJS table 按照表头字段排序功能(升序和降序)
  9. Swift - 多线程GCD详解
  10. Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo