野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)指针变量在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一个地址是不确定的变量,此时去解引用就是去访问了一个不确定的地址,所以结果是不可知的。(定义来自百度百科)
#include <stdio.h>
#define PTR_NULL ( (void*)0 )
typedef unsigned int uint32;
static void TestOutput( const uint32 * PtrData)
{
if( PTR_NULL != PtrData )
{
printf("the data = %x n", *PtrData);
}
}
int main()
{
uint32* Test ;
*Test = 0x12345678;
TestOutput(Test);
}
该测试程序虽然输出正确的结果,但不代表该程序没问题。实际上指针变量Test是个野指针。
1. 申明一个变量且在其生命周期内,就会在RAM中分配一块内存区域供其使用。
unsigned int b = 3000表示在RAM中分配4 Bytes(假设该类型变量在目标系统中占32bits)内存区域用来存储unsigned int类型数据。