void类型指针 指针的各种组合
void类型指针:
- 任何指针都可以赋值给void指针
- void指针赋值给其它类型指针时都必须经过类型转换
- void转换前不能参与指针运算,除非转换
- 本质:void指针只知道指向变量/对象的起始地址,却不能知道它们占几个字节
指向常量的指针:
const int *p1 = &a,不能通过p1改变所指的对象,可以改变指针本身的值
指针类型的常量:
int *const p2 = &a,可以通过p1改变所指的对象,不能改变指针本身的值
指针的各种组合:
- const int *p:就是指向常量的指针
- int const *p:根本不存在const*运算,所以const是修饰前面的int,等同于1!
- int *const p:就是指针类型的常量
- int *p[4]:指针数组,有四个元素,每个元素都是整型指针
- int (*p)[4]:p为指向4个元素一维整形数组的指针变量
- *(int*)p:(int*)是个强制转换,就是将p转换成指向int的指针(一般来讲这里的p都是void型)
- x = *p++:指针移动
- 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类型指针 指针的各种组合相关推荐
- 关于空指针(指针指向为NULL)和void类型的指针的理解
正在学C,书上老说空指针,或者说void指针,对于我这样的生手来说,理解非常容易造成混淆,因为void这个单词的意思也是空,到底空指针的意思是指指向地址为空的类型呢,还是指void类型的指针呢 (1) ...
- void 类型的指针
void指针是空类型的指针,也称为无类型的指针,它不指向任何类型,即它仅仅是个地址.因此void指针不能进行指针运算,也不能取其所指向的数据的值 只有将void指针跟其他类型的指针相关联,才能使用他, ...
- 【二级指针--定义、初始化赋值、解引用;特殊指针--空指针、void类型的指针】(学习笔记12--指针下)
目录 一.二级指针 指针的指针 二级指针的定义 二级指针的初始化与赋值 二级指针的解引用 二级指针与指针数组 main函数的参数 二.特殊指针 空指针 void类型的指针 新星计划第六篇博文,下面是上 ...
- C++ void类型指针的使用
一般情况下,指针的值只能赋给相同类型的指针.但是有一种特殊的 void类型指针,可以存储任何类型的对象地址,就是说任何类型的指针都可以赋值给void类型的指针变量.经过使用类型显示转换,通过void类 ...
- Linux c — void类型变量和指针
Linux c - void类型变量和指针 1.什么是void? void在英文中形容词的意思就是无效的,空的,空虚的意思,在C语言中就是空类型的意思. 在C语言中,使用void这个类型时,有如下规则 ...
- C语言数据类型——基本类型,构造类型,枚举类型,指针类型
目录 一.基本类型 1.1.整型int 1.2.实型(浮点型) 1.3.字符型char 二.构造类型 2.1.数组类型[] 2.1.1.字符数组 2.1.2.一维数组 2.1.3.二维数组 2.1.4 ...
- C++自学20:指针/指针的指针/const
指针,32位系统一定占据4个字节,64位系统一定占8个字节 定义指针 int* a{}; std::cout<<a<<std::endl; int *b{}; std::cou ...
- 【C语言】void 和 void* 类型
一. void 类型 1. 为何不能定义 void 类型的变量 为什么不能定义 void 类型的变量?因为它是空类型,不能够为变量提供空间吗? 定义变量的本质是开辟空间,我们用 sizeof 来计算 ...
- c语言void形式的函数,C语言的void类型
void类型 void的字面意思是"无类型",void * 则为无类型指针,void *可以指向任何类型的数据. void几乎只有"注释"和限制程序的作用. v ...
最新文章
- oracle 创建数据库 表空间 用户 授权和toad导入导出数据库
- 【鸿蒙 HarmonyOS】UI 组件 ( 进度条 ProgressBar 和 RoundProgressBar 组件 )
- SpringMVC框架的详细操作步骤和注解的用法
- 面试再也不怕问到HashMap(一)
- 机器学习算法Python实现:kmeans文本聚类
- SQL SERVER 解析XML到数据库表
- 水晶報表:金額轉換大寫12/8
- 物联网卡不能使用的原因有哪些
- 深度学习神经网络的预测间隔
- 6.跑步者--并行编程框架 ForkJoin
- 一款手机App的开发成本是多少钱?
- 细说PHP(精要版)
- XCode5设置字体
- 无惧断电 小苏云“同城三机房”容灾演练成功
- 可视化看板:基于电子竞技行业数据大数据可视化分析(详细代码及图文说明)
- cmd 一键清除系统垃圾
- powerbuilder建数据库
- Python用最简单的代码画出一箭穿心
- win10如何安装.NET3.5
- 增加对IE11的兼容