[讨论] 为什么会这样??这是c语言论坛么?
看拉若干天前 有人的一个求助,问 *(a+1)=a[1] ?看到好多高人在上面7 说8 说的,偶是个菜鸟,可偶这点还是高懂拉的。
在c语言中,数组的实现方法上只有一维的概念,多维数组被看成以下一级数组为元素的一维数组。就一上面的问题为列:
一;a ,a[1],均为地址常量,但是a的类型是int (*)[3],既数组指针。而a[1]的类型为int *,既整形指针。
二;a和a[1]的值与&a[1][0]相同。
所以 a+i 是以一维数组为元素而移动的,当 i 取1时 指针在逻辑结构上说是向下移动一行,但是要注意的是,这时 a+1 并不指向元素a[1][0],而是指向a[1][0]地址,既&a[1][0]或者a[1],再取内容后就是a[1]了!!
形象点说:就是在2维数组的基础上虚构拉一个一维数组。
a------a[0]-----a[0][0],a[0][1]
a+1-----a[1]-----a[1][0],a[1][1]
基本上偶算是讲明白拉,要是再不明白那偶也没办法拉。
可再这里偶想说的是:为什么会产生那样的争论??
争论的主题不再问题没上,而是人身攻击!~!~
大家来到这个论坛,都是喜欢编程的人,在一起探讨,在一起学习,可是
虽然偶在这里的时间不多,但看看偶们的论坛,真正求助的帖子没人回!~!~~~~
不知道 是太简单拉还是大家都不会!~偶是菜鸟,偶有许多问题不明白,所以偶到这里来向高手请教,但是至今偶没从中收益到什么~~~可是回复多的帖子都是些转贴,技术含量不高的东西。
偶们这里的技术区 不是文学论坛 也不是随便的烂坛子~~
技术是关键!~~
还是那句话,偶是华中科技计算机专业的大一新生,想为中国软件业之振兴而奋斗,但偶知道偶还嫩的很,所以请多多指教!~~~~