免费的图库网站,丹东网站推广,网页模板免费资源,在线教育网站建设投标书1.野指针
野指针就是指向未知空间的指针#xff0c;有以下几种情况
#xff08;1)指针未初始化
int main()
{int a0;int*b;return 0;
}
上面指针就是没有初始化#xff0c;形成一种指向一个随机空间的地址的指针#xff0c;我们可以修改成
int main()
{int a0;int*bNU…1.野指针
野指针就是指向未知空间的指针有以下几种情况
1)指针未初始化
int main()
{int a0;int*b;return 0;
}
上面指针就是没有初始化形成一种指向一个随机空间的地址的指针我们可以修改成
int main()
{int a0;int*bNULL;return 0;
}
(2)数组越界访问
数组下标超过数组本身下标时就会造成形成野指针
int main()
{int a[10]{0};int *barr10;return 0;
}
上面b就是野指针野指针指向数组后未知的数据
3局部变量的指针 非主函数局部变量的地址存在主函数指针中就会形成野指针由于指针指向的空间是有可能被销毁和未知和不属于程序还给操作系统如下例 上面就说明野指针的危害
总结野指针种类有许多只要不确定和不受我们掌控的指针我们就可以归类成野指针。
我们应该做到以下几点来避免野指针
1. 指针初始化 2. 小心指针越界 3. 指针指向空间释放即使置NULL 4. 避免返回局部变量的地址 5. 指针使用之前检查有效性
2.指针的运算
指针的加1或者减1都是将根据指针的不同权限将指针后移1个或多个地址
指针之间的减法是计算同种数据类型也就是有相同权限的之间的元素个数结果的绝对值就是元素个数所以我们就可以简化求字符串长度的函数 指针之间的加法没有意义
指针之间的逻辑运算 指针之间的 都是有意义指针在数组中的指针是由大到小的。我们要注意的是在C语言的标准中指针的比较要求和数组前面的进行比较而不是和后面进行比较。 3.数组和指针
数组中存放的相同类型的数据指针变量存放的是所指向的地址我们就可以将指针存放在数组中形成指针数组例如
int main()
{int a0;int c0;int *b[2]{a,c};}
我们可以通过访问数组的形式来进行访问指针对应的空间。 我们还可以通过这样的形式建立二维数组并打印 数组名的是首元素的指针这就是数组和指针之间的联系
数组在访问时arr[1]相当于*arr1的形式二者时等价于。
4.二级指针
二级指针是存储一级指针的地址的变量格式是
int main()
{int a1;int*ba;int**cb;}
int*代表了二级指针的指向的空间的数据类型 *代表存放的是指针
同样的我们可以将二级指针指向一级指针然后再获取一级指针的内容。