我定义了一个数组
int arr[5] = {0};
现在我输出arr和&arr
printf("%d %d\n", arr, &arr); 输出结果两个值是一样的。(vc6.0)
arr表示的是数组的首地址
&arr表示的是数组的首地址的地址
arr相当于一个指针, 我现在直接用printf输出arr相当于输出了arr中储存的内容(不是输出以该内容为地址的变量),其结果居然与arr的地址是相同的,这怎么可能。
当我输出*arr的时候结果是为零,这可以理解,因为他代表了该数组的第一个元素。但是和前面的联系起来看,就有问题了,arr的中储存的地址内容是他本身的地址,那个他指向的就是他本身,*arr的结果应该与arr相同才对,这到底怎么回事啊
我靠,你太牛逼了,膜拜啊,理解这个不太容易,像你这样讲清楚就更难了,你是应该有大四了吧
追答你过奖了,理解了就好,指针跟数组是C的精髓,理解之后才能写出简洁高效的代码,我已经工作三年多了,有问题可以一起讨论o(∩_∩)o
追问我刚上大一,能推荐我几本书读读吗,都说谭浩强的那本好,我觉得不行,讲的还算详细,但不透彻,我想求甚解!!
追答我自学的时候一开始就是看谭浩强的,可以勉强入门吧,但这本书很不严谨也没有把握C的精髓,也就是深度不够,所以会让人看的越来越多的疑问
推荐你几本书给你:C和指针,C缺陷与陷阱,还有据说The C Programming Language非常不错,发明C语言的大牛写的,不过我还没真正看过
还可以推荐你学习linux操作系统,我是一边学习linux学的C,从操作系统从底层的角度来理解C的话,会更透彻直观,并且linux是开源操作系统,网上的资源也非常多
恩,我这就去弄,我也要成为大牛,当我知道图灵,冯诺依曼这些人的那天起,我就发誓我要用我一生的时间去和他们齐名
追答哈哈你这年轻人,志向真是远大啊,我很欣赏,不过你才大一,机会是有的!不过走技术的路线过程会很痛苦,我就送给你两个字吧,坚持!总有一天你会发现所有的努力都是有回报的,加油!
去看看你楼上那个人发的链接,你就知道你错得很离谱,而且你没理解我的意思