如何安全的使用指针20190909

指针不可以乱用,安全的使用指针,需要对指针有足够清楚的认识。

在使用指针之前,一定要弄清楚两个问题:

1、这个指针指向了哪儿?

2、这个指针指向的那个地方是否有效?(是否能够访问)

就目前来说指针只允许指向两个地方:

1、指向变量、数组

2、指向NULL(0)。空指针可以判断,野指针无法判断。

当一个指针未赋值时,其值为随机值,此时指向了一个随机的内存地址,称为“野指针” wild pointer·

#include <stdio.h>

int main()
{
	int* p=0;

	if(p)
	{
		printf("%d \n",*p);
	}
	return 0;
}

实际工程空指针的另外一个应用是可以不传入输入函数。

#include <stdio.h>

void max_min(const int* arr,int len,int* pmax,int* pmin)
{
	int _max=0;
	int _min=0;
	const int* p=arr;
	if(pmax)
	{
		for(int i=0;i<len;i++)
		{
			if(p[i]>_max)
			{
				_max=p[i];
			}
		}
		*pmax=_max;
	}
	if(pmin)
	{
		for(int i=0;i<len;i++)
		{
			if(p[i]<_min)
			{
				_min=p[i];
			}
		}
		*pmin=_min;
	}
}

int main()
{
	int arr[6]={6,4,5,3,1,2};
	int max=0;
	int min=0;
	max_min(arr,6,&max,0);
	printf("max=%d\n",max);
	max_min(arr,6,0,&min);
	printf("min=%d\n",min);
	return 0;
}

1、杜绝野指针。

传递空指针:函数内部是有办法处理,判断一下就行。

传递野指针:函数内部无法处理,无法判断是否为野指针。

2、严禁数组越界。

3、变量是否有效???失效????指针指向的地方是否失效???

发布了140 篇原创文章 · 获赞 26 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41211961/article/details/100649974