零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门
一.关于 NULL 定义
NULL 在 stdio.h 中定义如下:
#if !defined(NULL) && defined(__NEEDS_NULL)
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
二.NULL 和 0 区别
在 C 语言中,NULL 和 0 的值都是一样的,但是为了目的和用途及容易识别的原因,NULL 用于指针和对象,0 用于数值;
#include<stdo.h>
int main()
{
int *p=NULL;
printf("%s",p);
}
/*
输出:
0x00000000
*/
由上面代码可以看出:NULL 在实际底层调用中就是 0 ;
在不同的系统中,NULL 并非总是和 0 等同,NULL 仅仅代表空值,也就是指向一个不被使用的地址,在大多数系统中,都将 0 作为不被使用的地址,所以就有了类似这样的定义
但并非总是如此,也有些系统不将 0 地址作为 NULL ,而是用其他的地址,所以说,千万别将 NULL 和 0 等价起来,特别是在一些跨平台的代码中,这更是将给你带来灾难。
三.猜你喜欢
- C语言 数组下标越界和内存溢出区别
- C语言 使用指针遍历数组
- C语言 指针和数组区别
- C语言 指针数组和数组指针区别
- C语言 野指针
- C语言 函数值传递和址传递
- C语言 函数不定长参数
- C语言 函数指针
- C语言 指针函数
- C语言 回调函数 callback
- C语言 #pragma once
- C语言 #include <> 与 #include “” 区别
- C语言 const 修饰函数参数
- C语言 const 和 define 区别
- C语言 #运算符
- C语言 ##运算符
- C语言 __VA_ARGS__
- C语言 ##__VA_ARGS__
- C语言 函数不定长参数 ##__VA_ARGS__经典案例
- C语言 va_start 宏
- C语言 va_end 宏
- C语言 va_arg 宏
- C语言 vprintf 函数
- C语言 va_start / va_end / va_arg 自定义 printf 函数
- C语言 main 函数
- C语言 main 函数参数 main(int argc, char *argv[])
- C语言 exit 函数
- C语言 abort 函数
- C语言 assert 函数
- C语言 NULL 和 0 区别
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容