关于二维数组地址问题的一个答复

简介: 【来信】敬爱的贺老师:  您好!  一直关注您的CSDN博客,首先向您说声辛苦了。作为外校的一名学生,我想向您请教一个关于二维数组的问题。程序如下:  int a [3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };  cout << hex << a << endl;  cout << hex &l

【来信】

敬爱的贺老师:

  您好!
  一直关注您的CSDN博客,首先向您说声辛苦了。作为外校的一名学生,我想向您请教一个关于二维数组的问题。程序如下:
  int a [3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
     cout << hex << a << endl;
     cout << hex << &a[0][0] << endl;
     cout << hex << a[0] << endl;
     cout << hex << &a[0] << endl;
     cout << endl;
     cout << hex << a+1 << endl;
     cout << hex << a[1] << endl;
     cout << hex << &a[1] << endl;
     cout << hex << &a[1][0] << endl;

     cout << *(a+1) << endl;
  我的理解是:

  但为什么a[i]和*(a+i)是等价的呢?可能是我的习惯性思维,一直认为*是解析符号,得到的一定是个具体的数值,而不是个地址。

  同时,a+i已经是个地址了,为什么*(a+i )还是个地址呢?绕不过弯了。期待您的解惑。


【回复】

你好:
  关于这个问题,我已经给你写了一些文字。这里面有些绕的东西,写出来需要抠字眼,不容易。这里面也有文字不便传达的内容。这样的问题,可能更适合当面讨论完成。
  所以我放弃已经写的文字,这样写完至少需要我1个小时时间。换个思路,帮你解答。实际上,这也是你在今后学习中遇到类似具体问题的处理策略。
  首先,在身边找到能讨论的人。
  其次,如果“首先”不具备条件的话,这样的问题,算是初学者比较普遍的问题,可以通过搜索引擎找,可以上论坛找。如果没有满意的答复,自己发贴求助。我知道不少问题,CSDN的论坛中会有不少热心人会帮助。
  就你的问题,我用百度,浏览到下面3个链接可能对你有用:(1)、(2)、(3)。
  以这样的方式,看大家的观点,会从不同角度讲,比听一个人讲效果好,也能够更锻炼你的辨析能力。
  以此作答。




==================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====


目录
相关文章
|
C++
2014秋C++第9周项目1参考-利用循环求和
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703。课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。   【项目1:利用循环求和】求1000以内所有偶数的和 要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。 参考解答://用for循环完成 #include &
1310 0
|
C++ 搜索推荐
2014秋C++第16周 项目1参考 数组的排序
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目1-数组的排序】按给定部分程序的要求,用指向数组的指针变量作为形式参数编写函数,完成排序。重点体会:(1)排序算法,可以是冒泡,也可以是选择;(2)用指向数组的指针变量作为形式参数,用数组名
1168 0
|
C++ C语言
2014秋C++第16周 项目2参考 用指针玩字符串
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目2-用指针玩字符串】  指针是神奇的,指向整型的指针int *p1,可以操作整型数组int a[];指向字符型的指针char *p2,可以操作字符数组(字符串)char str[];更灵活的是
1297 0
|
C++
2014秋C++第16周 项目3参考 用函数指针调用函数
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目3-用函数指针调用函数】  将下面的程序补充完整(包括定义函数),使其能够完成图示的功能。请使用已有程序的风格。 void eat(); void sleep(); void hitdoud
1249 0
|
C++
2014秋C++第16周 项目4参考 为动态数组扩容
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目4-为动态数组扩容】  下面的程序,利用动态数组保存学生的成绩。当再有一批学生成绩需要保存时,要为之扩容(和吃自助一样,用多少,取多少,这好),请补充完整下面的程序,实现如图所示的功能。 i
1248 0
高考日晨起杂感
  未等睡醒,便被雷声吵醒。雷声挺大,雨点也不小,但都是稀稀拉拉,总之是没多少降雨。这颇似现在的教育改革。这种下雨,让人不爽,让人不愿承认这也是下雨。也许我们心目中,倾盆的暴雨和润物细无声的小雨才能叫雨。  想起了今天是高考日,回味起了昨日在给法学院13级学生“计算机科学”课堂上讲的题外话。  昨日的题外话两个主题。  第一个话题,提醒这些去年满怀着期望走入高考考场高中生,现在的大一学生,是否
1468 0
|
程序员 Windows
程序员加油站 -- 不是人人都懂的学习要点
转载自酷勤网,原文链接:http://www.kuqin.com/pragmatic/20121030/333066.html     学习是一种基础性的能力。然而,“吾生也有涯,而知也无涯。”,如果学习不注意方法,则会“以有涯随无涯,殆矣”。 一.学习也是一种能力   看到这个标题,有人会说:“学习,谁不会?”的确,学习就像吃饭睡觉一样,是人的一种本能,人人都有学习的能力。我们在刚出生的时
1534 0
|
算法 C语言 C++
答复大一学生:学会爬,再说跑
【来信】   我是一名计算机科学与技术软件开发与设计方向的大一学生。最近关于基础课很头疼。在上学期我们学了计算机导论。下学期学了c语言。但是没有学计算机组成原理 操作系统等  在大学刚开始老师就说这些学科很重要。因此我就选择了自学, 学习操作系统的时候教材要求要计算机组成原理 数据结构 c语言基础比较好,而且操作系统也分好几种UNIX windows等 我要选择一种学习还是怎样?。 然后我又就
1598 0
|
C++
C++第9周(春)项目2 - Time类
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 【项目2】在第8周项目2基础上(1)定义对时间对象的自增和自减一目运算符 //一目运算符的重载 CTime operator++(int);//后置++,下一秒 CTime operator++();//前置++,下一秒,前置与后置
1345 0
|
C++
读《不乖教师的正能量》摘抄
  有生以来,一直当乖孩子、乖学生。   自工作以来,包括在行政工作的一段时间,想法颇多的我从未感觉到有多太的束缚——在不同阶段,我的领导们为我的各种想法、做法,提供了尽可能多的支持和帮助,至少也还是默许。所以,还算是乖下属。   而近一年来,我开始变坏,变得不乖。常常陷入一种奇怪的心绪当中,报怨没有,但心中总有不甘之处,放下了,又放不下。   看到《不乖教师的正能量:海峡两岸30位优秀教师的
1484 0