空指针和NULL】的更多相关文章

1. 空指针.NULL指针.零指针 1.1 什么是空指针常量 0.0L.'\0'.3 - 3.0 * 17 (它们都是“integer constant expression”)以及 (void*)0 (我觉得(void*)0应该算是一个空指针吧,更恰当一点)等都是空指针常量(注意 (char*) 0 不叫空指针常量,只是一个空指针值).至于系统选取哪种形式作为空指针常量使用,则是实现相关的.一般的 C 系统选择 (void*)0 或者 0 的居多(也有个别的选择 0L):至于 C++ 系统,由…
空指针/0/NULL 空指针是一个被赋值为0的指针,在没有被具体初始化之前,其值为0. NULL 是一个标准规定的宏定义,用来表示空指针常量. #define NULL 0   或者 #define NULL ((void*)0) 判断一个指针是否为空指针: f(!p) 和 if(p == NULL) ,if(NULL == p) 最好使用后两种,有些平台NULL不是0,这时候程序就会有问题了. 其中if(NULL == p) 与if(p == NULL) 没有区别,前一种是避免错误的写法(后面…
来源: https://blog.csdn.net/u010558281/article/details/77793644 字面意义上的解释: 0:整型常量 NULL:预处理符号 nullptr:空指针类型常量 其中前两者在C中出现,最后一个在C++11中出现.我们平常会使用这三个符号来表示空指针,但是他们之间还是有许多差别. NULL 声明在cstdlib中: #ifdef __cplusplus #define NULL 0 #else= #define NULL ((void *)0) #…
#include <iostream> using namespace std; class B { public: void foo() { cout << "B foo " << endl; } void pp() { cout << "B pp" << endl; } void FunctionB() { cout << "funB" << endl; }…
#include <stdio.h> int add(int a, int b ){ //函数的返回值和参数意一样有副本机制,存储在寄存器中,而不在内存中,函数的返回值不能取地址 &add() return a+b; } void main1(){ //定义函数指针的三部曲 int add(int a, int b ); //第一步:函数声明 int (*p)(int a, int b ); //第二步:把函数名字改成(*p) ()优先级大于* //简化 int (*p)(int, i…
周末与一个老朋友吃饭聊天,因为他正在培训班学习iOS开发,就随便聊了几句,发现自己OC基础上的欠缺和一些知识点的混淆.特此整理如下. 1.空指针 没有存储任何内存地址的指针就称为空指针(NULL指针) 空指针就是没有被具体初始化之前,其值为0的指针 来两个例子 Person *p1 = nil; Person *p2 = NULL; 下边会给出nil和NULL的区别 2.野指针 “野指针”不是空指针,野指针是指向了一块不可用的内存地址的指针,也就是说,野指针内是有保存一个内存地址的值,但是,指向…
reference:https://www.cnblogs.com/losesea/archive/2012/11/16/2772590.html 首先说一下什么是指针,只要明白了指针的含义,你就明白null的含义了.假设 有语句 int a=10;那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000:那么内存0x1000单元中存放了数据10,每次我们访问a的时候,实际上都是访问的0x1000单元中的10. int *p : p=&a : 当编译器遇…
string 可以这样判断空行input !="" 字符数组可以通过判断第一个元素是否为空字符'\0',是的话为空行arrar[0]=='\0':或者用长度strlen(char arrar)==0特别注意这两个arrar[0]==0:arrar[0]==NULL:因为指向了空指针,空指针指向NULL,NULL在VS这个IDE上,代表0,所以上述成立 NULL用于指针和对象,0用于数值 在不同的系统中,NULL并非总是和0等同,NULL仅仅代表空值,也就是指向一个不被使用的地址,在大多…
一.野指针 “野指针”不是NULL指针,是指向“垃圾”内存的指针. “野指针”的成因主要有三种: (1)指针变量没有被初始化.任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气.所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存.例如     char *p = NULL;     char *str = (char *) malloc(100); (2)指针p被free或者delete之后,没有置为NULL,让人误以为p是个合…
C++ Null 指针 C++ 指针 C++ 指针 在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯.赋为 NULL 值的指针被称为空指针. NULL 指针是一个定义在标准库中的值为零的常量.请看下面的程序: #include <iostream> using namespace std; int main () { int *ptr = NULL; cout << "ptr 的值是 " << ptr…