要学好C语言,指针是必不可少的一部分,也是非常重要的一部分。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 嵌入式软件工程师,学习指针是很有必要的。
首先,先理解一下指针的概念,指针就是内存地址。每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。下面来看一下C程序。
#include"stdio.h"
/*
什么是指针?指针就是地址
*/
int main()
{
int var_runoob = 10;
int *p = &var_runoob;
printf("var_runoob的变量地址:%p\n",p);
return 0;
}
看看打印结果
var_runoob 变量的地址: 0x7ffeeaae08d8
现在应该对指针有一定的了解了吧,指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,用 * 对其进行声明。接下来看看,我们怎么使用指针。
接下来了解一下C的NULL指针
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序:
在大多数的操作系统上,程序不允许访问地址为 0 的内存,因为该内存是操作系统保留的。然而,内存地址 0 有特别重要的意义,它表明该指针不指向一个可访问的内存位置。但按照惯例,如果指针包含空值(零值),则假定它不指向任何东西。
如需检查一个空指针,您可以使用 if 语句,如下所示:
if(p) /* 如果 p 非空,则完成 */
if(!p) /* 如果 p 为空,则完成 */