迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

C++ 中的空指针

作者:迹忆客 最近更新:2023/08/19 浏览次数:

本文将讨论 C++ 中 void* 指针的使用。 还提供了示例代码来演示其实现。


在 C++ 中实现 void* 指针

我们已经研究过,指针应该与它所指向的数据类型相同,如指针声明中所指定的那样。 如果我们声明一个浮点指针,它不能指向任何其他数据类型,例如 int、long 或 string; 它只能指向一个float类型变量。

C/C++开发了一种解决方案来克服这个问题——void*指针。 void* 指针是通用指针,可以指向任何数据类型,无需任何静态指针定义。

您可以将任何数据类型的地址分配给 void* 指针。 类似地,void* 指针可以分配给任何数据类型的指针,而无需显式地对其进行类型转换。

句法:

void *pointerName;
void *ptr;

在 C++ 中使用 void* 指针有两个主要缺点:

  1. 由于具体大小的原因,C++ 中的 void* 指针无法执行指针算术。
  2. 您不能取消引用 void* 指针。

C++ 中 void* 指针的大小

void* 指针的大小与C++中字符类型指针的大小类似。 指针存储的是指向程序中某些数据的内存地址。

C++ 中的这个指针取决于您的计算机平台。 在32位平台上,需要4个字节或32位来存储内存地址数据。

sizeof() 函数可以识别指针的大小。

语法:

void *ptr = NULL;     //void pointer
sizeof(ptr);
Example code:

#include
#include

using namespace std;

int main()  {
    void   *ptr    = NULL;          //void pointer
    int    *p      = NULL;          // integer pointer
    char   *cp     = NULL;          //character pointer
    float  *fp     = NULL;          //float pointer

    //size of pointers
    cout

在 C++ 程序中使用 void* 指针的原因

我们在 C++ 中使用 void* 指针来克服为程序中的不同数据类型分配单独值的问题。 C++ 中的 void* 指针可以指向任何数据类型并对该数据类型进行类型转换,而无需显式类型转换。

它没有任何返回值。 void* 指针可以指向 int、float 或 char 以及指向该特定数据类型的类型转换。

它可以帮助开发人员编写代码并减少程序的复杂性。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Arduino 中停止循环

发布时间:2024/03/13 浏览次数:444 分类:C++

可以使用 exit(0),无限循环和 Sleep_n0m1 库在 Arduino 中停止循环。

Arduino 复位

发布时间:2024/03/13 浏览次数:315 分类:C++

可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。

Arduino 的字符转换为整型

发布时间:2024/03/13 浏览次数:181 分类:C++

可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。

Arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:381 分类:C++

可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。

Arduino if 语句

发布时间:2024/03/13 浏览次数:123 分类:C++

可以使用 if 语句检查 Arduino 中的不同条件。

Arduino ICSP

发布时间:2024/03/13 浏览次数:214 分类:C++

ICSP 引脚用于两个 Arduino 之间的通信以及对 Arduino 引导加载程序进行编程。

使用 C++ 编程 Arduino

发布时间:2024/03/13 浏览次数:127 分类:C++

本教程将讨论使用 Arduino IDE 在 C++ 中对 Arduino 进行编程。

Arduino 中的子程序

发布时间:2024/03/13 浏览次数:168 分类:C++

可以通过在 Arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便