基本概念的理解:指针和指针变量的区别,到底有木有,请大神指教
这里抛出问题,希望有大神能够以示例说话,标出出处。我在这里引出一下问题:
指针和指针变量是一样的东西吗? 如果指针和指针变量不同, 那么, 他们不同在何处呢?
为了研究此问题, 我找来了三本书分别是C语言的经典著作谭浩强老师的《C程序设计第四版》,Kenneth A.Reek的《C 和指针》以及Stephen Prata的《C Primer Plus(第五版)中文版》以及对应的英文版。
在谭老师的书上有这样的字眼 第289页“首先要准确地弄清指针的含义。指针就是地址,”此句是用粗黑体强调的。此句的含义是,指针是地址,而地址是常量。那么指针就是一个常量。在下一段中有这样的一句话:“地址就是地址,本身就是一个值。”更加强调了指针就是一个常量的说法。指针变量呢?在谭老师的书中,指针变量就是盛放指针的变量,即盛放地址的变量。同样是289页上面的第二段就是说明的这一问题。
在《C Primer Plus(第五版)中文版》中第236页中9.7 指针简介 里面有这样一句话“一般来讲,指针是一个其数值为地址的变量(或更一般地说是一个数据对象)。”那么此句的含义是指针是一个变量。
为了防止是由于翻译出错导致理解失误, 我专门弄来了C Primer Plus的英文版。 原文“Pointers? What are they? Basically, a pointer is a variable (or, more generally, a data object) whose value is a memory address. Just as a char variable has a character as a value and an int variable has an integer as a value, the pointer variable has an address as a value. Pointers have many uses in C; in this chapter, you'll see how and why they are used as function parameters.”这里的翻译应该没有什么问题。
就上面的两本书来说,谭老师的看法是:指针非变量,指针是地址,指针变量是盛放指针的变量,也就是说, 指针变量是盛放地址的变量。很明显,指针不同于指针变量,他们的关系是,指针变量是盛放指针的变量。
Stephen Prata先生则认为:指针就是变量,而,指针变量等价于指针,这样的指针所盛放的值才是地址。
在《C和指针》当中并没有深深的阐释“指针”以及“指针变量”的区别。
现在,我对上面的两本IT著作的说法并没有搞清楚,不知道它们为什么如此矛盾, 也可能是我理解有误,但是, 我很想知道权威的说法是什么。很想知道原汁原味的概念,可能大神们会认为在下是在咬小字眼, 可是咱们搞研究的怎能不咬一下小字眼呢? 该理解的概念一定要理解的清楚一些。这样才对得起“学习”二字。
编程论坛是一个很权威,很有档次的论坛,在这里发言的人们都是很有档次,很有素质的。 我希望大家能在帖子上说出一点有意义的东西,不要在帖子中恶意灌水,谢谢您的理解。
[ 本帖最后由 赤血之魂 于 2013-3-17 14:41 编辑 ]