指针的分类:
-
- 空指针
- 空悬指针
- 野指针
- 指向某一种类型的指针
空指针:指针的值为NULL或0的指针
野指针: 指针未被初始化(赋值)
int *p; //p未初始化,为野指针
空悬指针: 指向的空间已被释放
int *p = (int *)malloc(sizeof (int) * size);
if( p != NULL)
{
free(p); //p已经被释放了,从一个指向数组首元素的指针,变成了一个空悬指针
p = NULL; //p被赋值为NULL(即0),从一个空悬指针变为一个空指针
}
指向某一类型的指针
//指向int的指针
int a = 1;
int *p = &a;
//指向一维数组的指针
int arr[3] = {0};
int *p = arr;
//指向二维数组的指针
int arr[2][3] = {0};
int (*p)[3] = arr;
//指向函数的指针
int max(int a, int b);
int (*p)(int,int) = max;