一级棒(Eachfun)
一级棒 - 读书笔记 - C++ Primer - 指针(三)指针与数组
RSS订阅
指针(三)指针与数组
发表时间:2006-07-07 00:55:53 关键词:C++,MFC,VC,Primer,编程,教程,读书

  指针和数组之间是什么关系呢?书中曰“密切相关”。其实,那简真就是同一回事嘛。用到指针的时候,你未必会用到数组;但是只要你用到数组,你就必要然用到指针(即使你不知道)。
  正是因为指针可以用加或减运算来移动它所指的位置,而且每加一或减一正好移动到相邻一个同类型的变量(不管这个变量占内存是多少),那么我有意将一堆同类型的变量放在一起,拿一个指针指向它们中的第一个,再记住它们的个数,这就成了数组。
  数组用一组方括号来解引用其中的某个成员,这也只是指针运算的简化。比如:
  int a[10];
  a[5] = 5;
  以上这种代码谁都用过,谁都能理解。那么下面这行代码呢?
  5[a] = 5;
  这种用法恐怕很少有人知道,即使现在知道了,恐怕也很难理解。实际上知道了数组运算的实质,这行代码的迷雾就会立即消失:C/C++语言处理括号的方法很简单,将方括号前面的值和方括号内的值相加,得到一个新的指针,再取指针所指的对象值。“a[5]”就完全等价于“*(a+5)”,“5[a]”就完全等价于“*(5+a)”。
  那么“*(a+5)”是什么运算呢?指针运算。因为在编译器处理“int a[10];”的时候,就等于定义了一个“int * const a;”同时将它初始化为指向栈内存的某处。
  实际上,正是因为“*(a+5)”这种用法实在太常用了,C才规定了它的替代用法,后来这个替代用法被广为接受,而它的实际却被人遗忘。
  以上内容本书未有提及,这是我看书看到这里的一点心得,作为读书笔记写下来。不是为了炫耀。本书虽然是给有一定基础的人读的,但是毕竟它只是按步就章地写下C++的语法规则,没有必要提及这些技巧性高而又实用性少的内容。我之所以要写下来,目的是为了便于理解指针运算。

本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2008 Eachfun.Com, All Rights Reserved 一级棒网络
苏ICP备05080156号
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!