c语言为什么要引入指针

几乎所有的编程语言都需要对内存地址进行操作,只不过C语言是显式,其他语言是隐式的。可以从机械运算的原理和实际的应用方法两个方面来理解。

机械运算需要地址操作

打个比方,给你一排计算器。每个计算器上都有一个内存,用M,MR,MC进行内存的读写擦除。在不同的计算器上进行分步计算,利用内存传递中间结果,就可以完成复杂的计算任务。不停地切换计算器的动作就相当于地址操作了。一台计算机相当于由大量的计算器组成的,而程序则规定了在计算器之间切换的步骤。从图灵机到冯氏架构,都可以理解为这样的方式。计算机程序必须得有地址操作,编程语言中出现代表地址的指针也就不足为奇了。但是,地址操作不符合我们的思考习惯,人们还是希望能够隐藏地址操作,赋予地址操作比较接近自然语言的意义。

被隐藏了的指针

在C#中,用ByRef关键字定义指针,而用ByVal关键字定义值。而Java则刻意隐藏了指针的概念。但下面这个例子中还是漏出了马脚:

String str=“Hello”;

String ptr=new String(“Hello”);

第一行中的变量是值,用它传参相当于复制了自己也就是值传递。而第二行的参数是一个指针,用它传参虽然也会复制自己,但是由于它是字符串的首地址,相当于引用传递。如果你留意一下几乎每种语言里都能找到指针的影子。能完全无视指针的语言大概只有SQL吧。这种语言是迄今为止最高级的语言,有人把它称为第五代语言。

原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/11532.html

(0)
上一篇 2023-06-20 下午1:45
下一篇 2023-06-20 下午1:53

相关推荐