空指针和野指针

int main()
{
	int *pt = NULL;
	int a = 9,b = 10; 
	*pt = b;  //报错,段错误 
	
	printf("%d\n",*pt);
	return 0;
}

没有初始化或者初始化为NULL的指针,第一次解引用时会报错。因为该指针此时指向的地址空间是随机的,很有可能不能访问;或者指向NULL此时更不能解引用。*pt = b执行顺序是先解引用,再对内存区数据进行更改。

int main()
{
	int *pt = NULL;
	int a = 9,b = 10; 
	pt = &a;  	//将pt指向a内存区
	*pt = b;	//没有报错
	
	printf("%d\n",*pt);
	return 0;
}

将pt指向a内存区后,再解引用就不会报错。

你可能感兴趣的:(c/c++)