一个二级指针引发的问题
来源:互联网 发布:js 获取点击对象的id 编辑:程序博客网 时间:2024/05/21 17:22
二级指针也就是指向指针的指针。如:char **p = NULL;。p就是一个二级指针——它是一个指向char *类型变量的指针。
我们来看下面这个小例子,它对吗。
就这短短几行代码,大家一般都会看出有问题,但是代码量一长,难免犯晕,我就晕过一次,不知道你晕过没。没有看出有问题,也不要紧,让过来人告诉你:
问题出在代码的第三行,我们虽然定义了二级指针p,它也的确指向一个char *类型变量[也即*p是char *类型的],那么是不是我们就可以用*p来保存一个字符的地址呢?答案是否定的,因为我们没有为*p分配一个存储char *类型变量的内存空间,就是说p指向一个不存在的地方或者说指向一个不明不白的地方,是野指针,这是很危险的。
所以上面代码我们应该改成这样的
指针是高效的,同时指针也是危险的,一旦由于误用指针而引发的错误是很难发现的,一般编译阶段是查找不到的,运行时才表现出来。而指针的所引发的错误的另一个特点儿是,引发错误发生的地方与表现出错误的地方往往不在一起,所以很难排查。想同时正确而高效的利用指针,就要采用正确的编程规范[如指针在定义时一定要初始化],多实践,多积累。
- 一个二级指针引发的问题
- 一个问题引发的对类成员指针的思考
- C++指针小结:由一个问题引发的。。。。。。。。。。。。。。。。。。。
- 二级指针的问题汇总
- 一个指针的引用引发的血案
- [转载]一个指针参数引发的血案
- 关于释放指针引发的一个错误
- 一个问题引发的思考
- 一个问题引发的笑话
- 一个引用 引发的问题
- 一个问题引发的思考
- 一个空格引发的问题
- 一个printf引发的问题
- 一个索引引发的问题
- 关于C的二级指针的问题
- 二级指针的地址值问题
- 二级指针内存的回收问题
- 求解一个简单的创建单链表的问题为什么用二级指针 ?
- 面试题 在从1到n的正数中1出现的次数 的一个解题思路
- 基于DSP/BIOS的程序开发
- AsyncTask
- 如何设置使Windows XP实现自动登录
- 翘尾巴
- 一个二级指针引发的问题
- poj3301_三分角度(旋转图形)
- SCOM:Synchronized COMmunication module 同步通讯机制
- centos 5.5 开启selinux支持apache ftp phpmyadmin方案
- javascript 操作radio和checkbox
- 转一篇关于浏览器兼容性的小结
- 以有序链表构成的开放式散列表
- Oracle索引使用规则
- Tarjan算法拾遗