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