指针赋值时可赋0表示,此指针没有指向任何对象。
把 int 型变量赋给指针是非法的,尽管此 int 型变量的值可能为 0。但允许把数值 0 或在编译时可获得 0 值的 const 量赋给指针:
int ival;
int zero = 0;
const int c_ival = 0;
int *pi = ival; // error: pi initialized from int value of ival
pi = zero; // error: pi assigned int value of zero
pi = c_ival; // ok: c_ival is a const with compile-time value of 0
pi = 0; // ok: directly initialize to literal constant 0
除了使用数值0或在编译时值为 0 的 const 量外,还可以使用 C++ 语言从 C 语言中继承下来的预处理器变量 NULL(第 2.9.2 节),该变量在 cstdlib 头文件中定义,其值为 0。如果在代码中使用了这个预处理器变量,则编译时会自动被数值 0 替换。因此,把指针初始化为 NULL 等效于初始化为 0 值:
// cstdlib #defines NULL to 0
int *pi = NULL; // ok: equivalent to int *pi = 0;
C++ 提供了一种特殊的指针类型 void*,它可以保存任何类型对象的地址:
double obj = 3.14;
double *pd = &obj;
// ok: void* can hold the address value of any data pointer type
void *pv = &obj; // obj can be an object of any type
pv = pd; // pd can be a pointer to any type
void* 表明该指针与一地址值相关,但不清楚存储在此地址上的对象的类型。
void* 指针只支持几种有限的操作:与另一个指针进行比较;向函数传递 void* 指针或从函数返回 void* 指针;给另一个 void* 指针赋值。不允许使用 void* 指针操纵它所指向的对象。
分享到:
相关推荐
Pascal转C++学习笔记——1.基本知识
Pascal转C++学习笔记——2.基本语句与体系
Cocos2d-x学习笔记——完全掌握C++ API与游戏项目开发.zip
组合和继承的主要目的是为了代码的重用。组合是将其他类的对象作为成员使用,继承是子类可以使用父类的成员方法。
个人网课学习笔记
C++基础的学习笔记(其中的代码源件可私信留言) C++中的空头程序 使用C++书写hello world 学习变量 学习常量 标识符命名规则 数据类型 运算符 程序流程结构 数组 函数 指针 结构体
学习笔记———《C++出错提示英汉对照表 》,供大家下载。
cpp代码-c++学习笔记——类与对象
【Visual C++】游戏编程代码\【Visual C++】游戏编程学习笔记之九:回合制游戏demo(剑侠客VS巡游天神) 配套代码
标准库为容器类型定义的操作很少,并没有为每个容器实现更多的操作。因为这部分操作可以抽象出来为所有的容器工作,那就是泛型算法。所谓“泛型”是指这些算法可以应用于多种容器类型上,而容器内的元素类型也可以...
一,算法 在当前状态下找出局部最优解,转化为全局最优解。 二,活动安排问题 1.问题描述:给定n个开区间(ai,bi),在给定范围内尽量选择多个区间,使得这些区间两两没有公共点。 2.算法:按照结束时间bi从小到大...
NULL 博文链接:https://cherishlc.iteye.com/blog/1756762
C++笔记总结,通过笔记课以掌握C++的重要知识点,非常值得一看
c++学习笔记1 leetcode1:两数之和(map与vector)(csdn)————程序
C++整理笔记word版 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。是01 C++学习笔记的后续补充 内存分区模型 引用 函数提高 类和对象 文件操作
个人整理的c/c++学习进阶方法,零基础轻松掌握关键知识点,是你在面向过程——>面向对象学习过程中的辅助利器! 话不多说,开始吧!!!
C++面向对象——B站黑马程序员视频学习笔记。