第1个回答 2014-03-09
指针起的作用是标识一块内存。电脑内存上的每一个字节都具有一个编号,称为地址(可以简单理解为指针),任何读写内存的指令都必须携带地址信息,否则电脑不知道读写那块内存。不管你的程序是用什么语言写的,要运行数据和代码必须驻留内存,CPU要执行指令必须有一个“指针”(程序计数器)指向内存的代码块,如果某个指令要操作内存数据,该指令必须携带额外的地址信息。
C语言的指针让程序员具备直接操作和管理内存的能力,这个能力也是C语言适合编写底层软件的原因之一。现在拿得出手的操作系统都是用C语言(有时也用C++)和汇编语言编写的。在底层软件领域C语言是占统治地位的。
C语言对内存的操作都是通过指针来实现的,虽然C语言可以通过变量名访问内存,但是编译过后变量名被转换为地址。
其他语言虽然没有指针或者地址概念,但是访问内存是需要地址的,所以与地址相关的底层操作由该语言的运行时库承担了,对程序员来说,地址就“不存在了”。
第2个回答 2014-03-09
指针其实是某些处理的鼻祖 c#或者java里面没有指针 但是有引用 其实引用就是指针的一种封装形式 你觉得有了c这种高级语言 汇编语言甚至机器语言就是否没用了呢? 指针非常灵活强大 但是用起来确实非常容易出错 c语言毕竟不支持引用或者其他的变相指针形式 要用c的话一切就要用纯指针实现(纯指针可以节省封装所用的资源 加快处理速度 提高程序效率) 就像嵌入式的内核或者操作系统内核要用c 不用java一样 有的时候稳定性和可靠性是第一考虑 但是有的时候 高效才是第一考虑 而稳定性需要靠程序猿手动实现(而不依赖程序的某些try catch 这种东西)
第3个回答 2014-03-09
C#也有指针,只是它是面向对象的,有着大量的封装,在C#里指针(*)变成了引用(ref)、(a->b)变成了(a.b)。指针就是地址,把一个内存单元画成正方体(画在纸上能可见3个面),上面分别标注: 变量名、地址、值。这就形象多了。
第4个回答 2019-02-18
指针实际上就是一个内存地址,比如一个函数指针,就是一个函数的入口地址,通过这个地址,系统就可以找到这个函数的位置并调用它。