void类型指针:

  • 任何指针都可以赋值给void指针
  • void指针赋值给其它类型指针时都必须经过类型转换
  • void转换前不能参与指针运算,除非转换
  • 本质:void指针只知道指向变量/对象的起始地址,却不能知道它们占几个字节

指向常量的指针:

const int *p1 = &a,不能通过p1改变所指的对象,可以改变指针本身的值

指针类型的常量:

int *const p2 = &a,可以通过p1改变所指的对象,不能改变指针本身的值

指针的各种组合:

  1. const int *p:就是指向常量的指针
  2. int const *p:根本不存在const*运算,所以const是修饰前面的int,等同于1!
  3. int *const p:就是指针类型的常量
  4. int *p[4]:指针数组,有四个元素,每个元素都是整型指针
  5. int (*p)[4]:p为指向4个元素一维整形数组的指针变量
  6. *(int*)p:(int*)是个强制转换,就是将p转换成指向int的指针(一般来讲这里的p都是void型)
  7. x = *p++:指针移动
  8. x = (*p)++:指针所指的元素+1
#include<stdio.h>
int main(void)
{char k = 'k';int q = 5, q1 = 4;void *p = &q;printf("%d\n", *(int*)p);p = &k;printf("%c\n", *(char*)p);int const *p1 = &q1;printf("%d\n", *p1);p = nullptr;  /*C/C++的NULL宏是个被有很多潜在BUG的宏,因为有的库把其定义成整数0,有的定义成(void*),在C++的时代,这就会引发很多问题*//*C++11使用nullptr关键字,是表达更准确,类型安全的空指针*/return 0;
}

void类型指针 指针的各种组合相关推荐

  1. 关于空指针(指针指向为NULL)和void类型的指针的理解

    正在学C,书上老说空指针,或者说void指针,对于我这样的生手来说,理解非常容易造成混淆,因为void这个单词的意思也是空,到底空指针的意思是指指向地址为空的类型呢,还是指void类型的指针呢 (1) ...

  2. void 类型的指针

    void指针是空类型的指针,也称为无类型的指针,它不指向任何类型,即它仅仅是个地址.因此void指针不能进行指针运算,也不能取其所指向的数据的值 只有将void指针跟其他类型的指针相关联,才能使用他, ...

  3. 【二级指针--定义、初始化赋值、解引用;特殊指针--空指针、void类型的指针】(学习笔记12--指针下)

    目录 一.二级指针 指针的指针 二级指针的定义 二级指针的初始化与赋值 二级指针的解引用 二级指针与指针数组 main函数的参数 二.特殊指针 空指针 void类型的指针 新星计划第六篇博文,下面是上 ...

  4. C++ void类型指针的使用

    一般情况下,指针的值只能赋给相同类型的指针.但是有一种特殊的 void类型指针,可以存储任何类型的对象地址,就是说任何类型的指针都可以赋值给void类型的指针变量.经过使用类型显示转换,通过void类 ...

  5. Linux c — void类型变量和指针

    Linux c - void类型变量和指针 1.什么是void? void在英文中形容词的意思就是无效的,空的,空虚的意思,在C语言中就是空类型的意思. 在C语言中,使用void这个类型时,有如下规则 ...

  6. C语言数据类型——基本类型,构造类型,枚举类型,指针类型

    目录 一.基本类型 1.1.整型int 1.2.实型(浮点型) 1.3.字符型char 二.构造类型 2.1.数组类型[] 2.1.1.字符数组 2.1.2.一维数组 2.1.3.二维数组 2.1.4 ...

  7. C++自学20:指针/指针的指针/const

    指针,32位系统一定占据4个字节,64位系统一定占8个字节 定义指针 int* a{}; std::cout<<a<<std::endl; int *b{}; std::cou ...

  8. 【C语言】void 和 void* 类型

    一. void 类型 1. 为何不能定义 void 类型的变量 为什么不能定义 void 类型的变量?因为它是空类型,不能够为变量提供空间吗? 定义变量的本质是开辟空间,我们用 sizeof 来计算 ...

  9. c语言void形式的函数,C语言的void类型

    void类型 void的字面意思是"无类型",void * 则为无类型指针,void *可以指向任何类型的数据. void几乎只有"注释"和限制程序的作用. v ...

最新文章

  1. oracle 创建数据库 表空间 用户 授权和toad导入导出数据库
  2. 【鸿蒙 HarmonyOS】UI 组件 ( 进度条 ProgressBar 和 RoundProgressBar 组件 )
  3. SpringMVC框架的详细操作步骤和注解的用法
  4. 面试再也不怕问到HashMap(一)
  5. 机器学习算法Python实现:kmeans文本聚类
  6. SQL SERVER 解析XML到数据库表
  7. 水晶報表:金額轉換大寫12/8
  8. 物联网卡不能使用的原因有哪些
  9. 深度学习神经网络的预测间隔
  10. 6.跑步者--并行编程框架 ForkJoin
  11. 一款手机App的开发成本是多少钱?
  12. 细说PHP(精要版)
  13. XCode5设置字体
  14. 无惧断电 小苏云“同城三机房”容灾演练成功
  15. 可视化看板:基于电子竞技行业数据大数据可视化分析(详细代码及图文说明)
  16. cmd 一键清除系统垃圾
  17. powerbuilder建数据库
  18. Python用最简单的代码画出一箭穿心
  19. win10如何安装.NET3.5
  20. 增加对IE11的兼容

热门文章

  1. 零基础学python好学吗-想要0基础学python要怎么做?python好学吗?
  2. python语言的读法-python是什么语言编写的
  3. python怎么读取txt文件-Python三种读取txt文件方式
  4. 一张图学会python3语法-一张图片在Python操作下的4种玩法(附源码)
  5. python最适合做什么-python学完之后比较适合哪些职业工作呢?
  6. 成都专业语音转化为文字怎么样_安徽听见科技
  7. TypeScript简介
  8. uni-app登录+记住密码
  9. 【王道计组笔记】总线(2):性能指标分析
  10. 【java笔记】TCP通信程序