在上一篇文章里,因为“少用指针”一句,引起了很多同行的热烈评论,真是意想不到,干脆来八卦一下这个颇有意思的TOPIC。
作为一个从C/C++成长起来的Programmer,我也曾经疯狂地迷恋过指针,并也曾因此而自以为是高高在上,可以说指针就象一个妖精,她妖艳动人,但也可怕与无情,我的心因她而怦怦乱跳过,也因她而伤心绝望过,我爱不起但躲得起,呵呵,千万别过早晕掉,更肉麻的还在后面呢。
爱上指针的理由很多很多。指针是C/C++的一个重要概念,是一个重要特色,也是C/C++的精华所在。一个C/C++程序员,如果没有使用过指针,那真是程序人生的一大憾事。我依然清晰地记得,当年使用指针来处理数据结构、字符串及数组时是如此地过隐,简直是爽歪了,晚上做梦都在SMILE,另外,我们还可以通过获得所访问的任何变量的地址来引用内存,通过使用地址,我们可以执行所有种类的异常灵活的指针算法,呵呵,酷吧,总而言之,掌握指针的运用,可以使你的程序简洁、紧凑、高效,而且颇有特色,能完成许多用其它高级语言难以实现的功能,MY GOD,可怜的NEW NEW Programmer们可能都不知道苦命的老一辈程序员在胡说八道什么,因为MICROSOFT、BORLAND、SUN等等这些让人既爱又恨的WBD们将开发工具变得越来越傻瓜,很多PROGRAMMER们只会机械地拉摆各式各样的控件,写几行单纯的CODE,他们早就与指针、内存管理、消息机制等等说886,有点跑题了。
言归正传,以上所述指针的所有功能是非常强大的,同时也是非常危险的,正因为它危险,所以在我慢慢老去的时候,我就只剩下了躲避的能力,悲哀啊。据权威人士的调查,在以C/C++开发的程序中,出现最频繁的BUG依次以下:(1)忘了释放内存,结果造成内存的泄露;(2)过于迅速地释放内存,结果造成坏的指针;(3)指向内存中错误的地址,误用了变量或栈。
呵呵,看到了吧,使用指针是十分容易出错的,而且这些错误是很隐蔽很难以发现的,由于指针运用的错误而造成的后果是严重的,有时会使整个程序遭受破坏,莫明其妙的“runtime error”曾经使我夜半恶梦惊醒,汗流浃背。
那么,在使用指针时如何减少错误呢?我个人认为有三个方法:一是小心小心再小心,二是调试调试再调试,还有一种就是学习学习再学习,晕了吧,当然,足够好地设计、编码与测试是可以在一定的程度上避免或减少这些错误的,但不幸的是,程序员只是人而已,人是不可能完美无瑕的,正如上一篇文章所说,选择了一个,就必须放弃另一个。
分享到:
相关推荐
根据给定文件的信息,本文将深入探讨拷贝构造函数导致指针挂起的问题,并提出解决方案。此问题在C++编程中较为常见,特别是在类中包含指针成员变量时更为显著。 ### 拷贝构造函数导致指针挂起的研究 #### 1. 拷贝...
### 彻底理解指针,指针数组和数组指针,指针函数和函数指针 #### 一、基础知识 在计算机编程中,指针是一个非常重要的概念,尤其是在C/C++这样的语言中更是如此。简单来说,指针是一种变量,但它存储的不是普通的...
指针是C/C++编程语言中的核心概念,它在程序设计中扮演着至关重要的角色。指针是一个变量,其存储的是内存地址,该地址指向另一个变量。理解并熟练使用指针,是提升编程技能的关键步骤。 一、指针的基础概念 1. ...
透明鼠标指针 透明鼠标指针透明鼠标指针透明鼠标指针透明鼠标指针透明鼠标指针透明鼠标指针
`const`关键字可以用来修饰指针,表示指针不可变(`const int *p`)或指针所指的数据不可变(`int *const p`)。在某些情况下,还可以同时声明为`const int *const p`,表示两者都不可变。 ### 10. 空指针 `NULL`或...
C指针是C语言中的核心概念,它是编程中不可或缺的一部分,尤其对于理解内存管理和程序设计的底层机制至关重要。本文将深入探讨C指针的基本概念、使用方法及其在程序设计中的重要性。 首先,理解C指针的基本定义是...
- 需要初始化:未初始化的指针可能含有随机的内存地址,访问这些地址可能导致不可预测的行为。 - 空指针:`NULL`或`0`代表空指针,表示指针没有指向任何有效地址。 - 指针运算:指针可以进行加减运算,但必须考虑到...
"200款鼠标指针库-鼠标指针设置-鼠标指针方案.zip"这个压缩包文件正是一份专门针对这一需求提供的资源集合。 首先,我们要理解鼠标指针。在计算机操作系统中,鼠标指针是用户进行图形界面操作的主要指示工具,通常...
常量指针是指指针所指向的数据是不可改变的,即不能通过指针来修改数据,但是指针本身可以重新指向其他地址。例如: ```c const char *chrPtr = "World"; // 所指向的数据不可变,但指针本身可以重新指向 ``` 这里 `...
指针是C语言中的精髓,但也是难点。我这不是我第一次写关于C指针的...所以我想通过一篇文章来尽可能的讲解指针,以对得起这个文章的标题吧。可以帮大家正确理解C语言中的常量、变量、指针的指针变量之间的相互关系。
而指针函数通常不作为参数传递,除非其返回的指针具有特殊含义。 4. **语法**:函数指针的声明和使用涉及到星号(*)和括号()的组合,如`int (*ptr)(int, int)`,而指针函数的声明和使用遵循常规的函数声明规则,如`...
实际上,程序员并不需要关心空指针的具体实现细节,因为编译器会处理这些细节,并确保在使用空指针时不会引发错误。 ##### 1.6 对空指针实现的保护政策 为了防止程序试图访问空指针所指向的位置而导致程序崩溃或...
在IT领域,鼠标指针是用户界面中一个重要的组成部分,尤其是在个人电脑操作系统中。它作为用户与计算机交互的直观工具,扮演着引导和指示的角色。本文将深入探讨“彩色荧光鼠标指针”这一主题,以及如何在Windows...
在C语言中,指针和函数是两个非常重要的概念,而将它们结合在一起,就产生了指针函数和函数指针变量。这两个概念是C语言高级特性的体现,它们在编程中有着广泛的应用,如回调函数、动态加载库、内存管理等。 首先,...
值得注意的是,为了保证系统稳定性,不建议使用过于复杂或动态效果过于频繁的鼠标指针,以免影响正常的计算机操作。 综上所述,这个资源包为用户提供了多样化的鼠标指针选择,不仅能满足个性化需求,还能通过有趣的...
C++中的`new`和`delete`操作符分别用于动态分配和释放内存,而它们的工作离不开指针。`int *p = new int;`会分配一个整型空间,并返回其地址给p。当不再需要该内存时,应使用`delete p;`来释放。 指针与指针数组也...
本文将从多个角度深入探讨指针的概念及其应用,帮助读者建立起对指针的全面认识。 #### 二、什么是指针? 在C语言中,指针是一种变量类型,它可以存储另一个变量的内存地址。通俗来说,指针就像是一个指向某个位置...
` 这里的`p`是一个指针,但它不直接指向一个`int`,而是指向一个包含三个`int`元素的数组。 4. `int *p(int);` 这里的`p`是一个函数,它接受一个`int`参数,并返回一个`int`类型的值。 5. `int (*p)(int);` 这里的...
在IT领域,个性化和用户体验是两个非常重要的概念。本文将探讨如何通过自定义鼠标...通过鼠标指针的个性化和优化,我们可以提升桌面的视觉效果,同时也不忘保证操作的流畅性和效率,从而让日常的电脑使用变得更加愉快。
动态水滴鼠标指针将这些基本形状替换为具有动态效果的水滴动画,例如,箭头可能会被设计成水滴溅起或落下的样子,手形可能呈现为水滴的手势,等待图标则可能是水滴慢慢滴落的动画。这样的设计使得原本单调的指针变得...