【来信】
敬爱的贺老师:
您好!一直关注您的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菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 ===== |