目录
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门
一.指针简介
在前面的文章有关于指针的介绍:指针很灵活,它可以指向任意类型的数据。指针的类型说明了它所指向地址空间的内存,以下是有效的指针声明:
int *p; /* 一个整型的指针 */
double *p; /* 一个 double 型的指针 */
float *p; /* 一个浮点型的指针 */
char *p; /* 一个字符型的指针 */
注意:不要忘记在指针类型和变量名中间还有一个 * 号,没有这个 * 号,只是定义了一个普通变量,这也是普通变量声明和指针声明的区别之一;
二.空指针 NULL
在 C 语言中,如果一个指针不指向任何数据,我们就称之为 空指针 ,用 NULL
表示。例如:
int *p = NULL;
注意区分大小写,null 没有任何特殊含义,只是一个普通的标识符。NULL 是一个宏定义,在 stdio.h
被定义为:
#define NULL ((void *)0)
我们知道,变量一旦定义就要分配内存,指针变量也是如此。例如:
int *p; //它不是空指针
它的值是随机的,是垃圾值,如果不小心使用了它,运行时一般会引起段错误,导致程序退出,甚至会不知不觉地修改数据。
p 经过定义,就一定在内存中分配了 4 个字节的空间,只是它的值是随机的,不像 int 会被初始化为 0,但是它确实指向了一段正常使用的内存。使用 p 时,操作的就是这段内存的数据,幸运的话能够正常运行,不过大部分情况下这段内存是无权操作的。
三.关于 NULL 和 0
不要把 NULL 和 0 等同起来,下面的写法也是不专业的:
int *p = 0;
正确的书写:
int *p = NULL;
注意 NULL 和 NUL 的区别:NULL表示空指针,是一个宏定义,可以在代码中直接使用。而 NUL 表示字符 ‘\0’,也就是字符串结束标志,它是 ASCII 码表中的第 0 个字符。NUL 没有在 C 语言中定义,仅仅是对 ‘\0’ 的称呼,不能在代码中直接使用。
四.猜你喜欢
- C 语言逻辑运算符
- C 语言三目运算符
- C 语言逗号表达式
- C 语言 sizeof 和 strlen 函数区别
- C 语言 strcpy 和 strcpy_s 函数区别
- C 语言 memcpy 和 memcpy_s 区别
- C 语言 数组定义和使用
- C 语言 数组遍历
- C 语言 数组下标越界
- C 语言 数组内存溢出
- C 语言 数组下标越界和内存溢出区别
- C 语言 二维数组定义和使用
- C 语言 二维数组行数和列数计算
- C 语言 指针声明和定义
- C 语言 指针 p++ / p–
- C 语言 p++/§++/_(p++)/_p++
- C 语言 使用指针遍历数组
- C 语言 指针和数组区别
- C 语言 数组指针
- C 语言 指针数组
- C 语言 指针数组和数组指针区别
- C 语言 空指针 NULL
未经允许不得转载:猿说编程 ? C 语言 空指针 NULL
本文由博客 - 猿说编程 猿说编程 发布!