指针二次理解(第三篇)如何安全的使用指针
来源:互联网 发布:java final 修饰类 编辑:程序博客网 时间:2024/05/16 04:37
五、 如何安全的使用指针
指针不可乱用
安全的使用指针需要对指针有足够清楚的认识
使用指针之前,一定要弄清楚两个问题:
1.这个指针指向了哪里?
指针只允许指向两个地方
1) 指向了变量、数组
代码走起
int n;
int* p = &n; //p指向的内存:一个变量
int arr[4];
int* p2 = arr; //p指向的内存:一个数组
2) 指向0
代码走起
int* p = 0; //空指针
当一个指针未赋值时,其值为随机值,此时值指向了一个随机的内存地址。称为“野指针”(wild pointer)
2.空指针
值为0的指针,为空指针
int* p = 0;
当指针为空时,不能使用星号操作。
int* p = 0;
printf( "%d \n" , *p ); //错误 崩溃
但空指针是一种可以接受的情况,只需要加一个if判断就能解决,
if( p )
{
printf( "%d \n" , *p );
}
3.严防数组越界
当指针指向数组时,要注意不要越界访问
代码走起
int arr[4];
int* p =arr;
p += 4;
*p = 12; //已经越界,但不易察觉
4.指向的变量是否已经失效
如果指向的目标的生命期已经终结(失效),则指针也失效
代码走起
int main()
{
int* p = 0;
if(1)
{
int* p = 10; //a生效
p = &a; //p指向a
}
*p = 11; //p指向了一个无效的位置 错误
return 0;
}
- 指针二次理解(第三篇)如何安全的使用指针
- 指针二次理解(第二篇)
- 如何理解指针的指针
- 指针二次理解(第一篇)
- 指针的安全使用
- 指针的安全使用
- 指针的安全使用
- 指针的安全使用
- 彻底理解指针第三篇
- 什么是指针?如何理解指针?指针又是如何定义与使用的?
- 问题:如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?(转载)
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?
- 如何理解指向指针的指针?
- C#调用C++的EXE
- 正态分布(Normal distribution)与高斯分布(Gaussian distribution)
- Java基本语句(运算符、条件控制语句、for循环
- MFC格式转换 UTF8 ANSI UNICODE
- C#中using的一个用法
- 指针二次理解(第三篇)如何安全的使用指针
- Vector容器
- deque和stack容器
- shell截取字符串
- 广度优先搜索与深度优先搜索
- 指针二次理解(第一篇)
- Android 渠道包(多渠道打包)
- 指针二次理解(第二篇)
- 弧形文字+弧形canvas