迅维网

查看: 2942|回复: 4
打印 上一主题 下一主题

编程问题3:指针

[复制链接]
跳转到指定楼层
1#
发表于 2009-12-5 08:14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 江苏苏州 来自 江苏苏州

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
什么是指针,使用指针有哪些危险?
C和C++里都有指针,有人说不了解指针等于没有学会C语言,有一定道理,因为其他的语言里基本上很少有使用指针的(汇编语言可以人为使用)。
例如C++有指针,但是JAVA为违避指针的危险性,不使用指针,尽管它们都是面向对象的语言。

2#
发表于 2009-12-20 13:29:59 | 只看该作者 来自: 上海 来自 上海
我觉得C与C++的强大的地方,就是因为指针,因为有了指针,它才可以访问计算机底层硬件..

回复 支持 反对

使用道具 举报

3#
发表于 2009-12-29 01:47:56 | 只看该作者 来自: 广西南宁 来自 广西南宁
指针是什么?
IBM PC中,内存的每个存储单元都有唯一的编号,这一编号称为内存地址。
指针是内存中的一个存储单元,它存放的是内存地址。
例如:每个保险箱都有一个编号,有一个保险箱里只装了一张写有保险箱编号的纸条。
使用指针危险的地方在于:
1,不知道声明变量到底做了什么。
声明变量:分配存储单元,把存储单元的地址用一个符号代替,用户可以通过这个符号访问存储单元。
声明变量不会对分配到的存储单元中的内容进行操作。而使用指针正是使用存储单元中的内容,内存的存储单元不会因为没有赋值而空白,它会有一个无法预知的值存在。所以使用指针前必须先赋值。
2,C/C++中用户程序可以申请存储空间。申请到的空间的地址通常存在一个指针里。用户修改了这一个指针会导致无法再访问原来的空间,也就无法释放原来的空间。多次类似的操作后,内存可用空间不足,程序将无法继续运行。
对于编程而言,不知道电脑将要做什么是最危险的。
“汇编语言可以人为使用”我句话我有不同看法:汇编语言不需要指针。
因为每一次访问内存都必须指出内存地址。要么在指令中包含,要么存放在指定/隐含的寄存器中。
回复2#:C/C++的指针是用来访问内存的,不是用来访问底层硬件的。访问底层硬件通过函数对IO端口读写实现的。当然最直接的方法是使用IN/OUT指令。C编译器提供了在C代码中使用汇编指令的方法。参阅asm关键字。

回复 支持 反对

使用道具 举报

4#
发表于 2009-12-30 09:59:58 | 只看该作者 来自: 江苏苏州 来自 江苏苏州
指针,如果通俗地说就是一个门牌号码,通过门牌号码可以找到具体的地方,然后可以对具体的单元进行操作。
C/C++的指针最危险就是指针悬空,所谓指针悬空实际就是没有给指针制定特定指向,结果指针可能指向一个随机的位置,如果这时对指针指向的位置进行操作,而这个位置如果是系统区,可能造成系统错误或者崩溃。

其实很多高级语言也有指针,典型地说,PASCAL以及后来的delphi也有指针,JAVA等用引用替代指针功能(C/C++也有引用)实际就是防止指针悬空。其他一些没有指针的语言其实也可以由编程者自己搞一些指针出来。

指针悬空可以指向任意位置导致的后果比较严重;
悬空的指针如果只是指向本程序所占的空间,后果是可能导致程序出错或者程序运算结果出错,这要看是指到了程序代码区还是数据区。

无能那种出错情况都是不能容许的,所以一旦设置指针一定要马上让它指向确定的变量空间,这样就避免了指针悬空。

回复 支持 反对

使用道具 举报

5#
发表于 2010-1-4 14:12:39 | 只看该作者 来自: 重庆 来自 重庆
因为有了指针,它才可以访问计算机底层硬件..
------------------------------------------------
用不用指针,只是个编程的手段,这个和写应用程序还是驱动程序没关系。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复