多维数组指针
关于c语言中多维数组指针我有点不明白,例如数组a[2][3],书中说a是指向0号分数组的指针,a[0]是0号分数组的数组名,指向a[0][0]的指针。他们在数值上应该是相等的。但书上又说a与a[0]的地址的值是相同的。那不就成了a[0]与&a[0]的值是相同的?a[0]到底是什么?里面存放的值又是什么? 问题点数:20、回复次数:13Top
1 楼winstonch()回复于 2005-04-20 11:13:00 得分 0
a[0]是地址,对数组来说&有点特殊Top
2 楼discory(discory)回复于 2005-04-20 11:15:39 得分 3
数组a其实就是a[0]的一种简写方式,因为数组是从a[0]开始的,数组a就表示a[0]
a[0]表示数组的第一个成员,a[0]是第一个成员数值,&a[0]是取这个数值的地址,
我也是新手,我是这样理解的,不知对否Top
3 楼streetballerym(streetballerym)回复于 2005-04-20 11:41:04 得分 0
to discory(discory)
a与a[0]在含义上不同的,他们的步进值不同。a+1与a[0]+1的地址值和步进值都是不同的Top
4 楼streetballerym(streetballerym)回复于 2005-04-20 11:44:45 得分 0
还有谁能解释一下吗?Top
5 楼zouwen198317(静悄悄)回复于 2005-04-20 11:49:01 得分 0
upTop
6 楼dongpy(51-->ARM)回复于 2005-04-20 11:51:29 得分 0
a[0]到底是什么?里面存放的值又是什么?
===========================================
a[0]是一个地址常量,与a相等.
a[0]与&a[0]的区别就是步进值不同.Top
7 楼tree_ada(树)回复于 2005-04-20 13:30:54 得分 0
a[0]与a都是数组中第一个元素的地址,即&a[0][0],里面存放的是第一个数组元素a[0][0].
注意a[0]表示的是地址,想必楼主的问题是出在这里。Top
8 楼bsnhk((void *)0)回复于 2005-04-20 16:41:13 得分 8
a是一个一维数组(即a[2])的名字,所以a就是指向一维数组a中下标为0的那个元素(即a[0])的常量指针,所以a等效于&a[0];
a[0]是一个一维数组(即a[0][3])的名字,所以a[0]就是指向一维数组a[0]中下标为0的那个元素(即a[0][0])的常量指针,所以a[0]等效于&a[0][0];Top
9 楼bsnhk((void *)0)回复于 2005-04-20 16:52:49 得分 3
指针的关键是类型,而不是其值如何。
指针的类型涉及到类型表达式、指针步长
一个标识符(包括指针)的类型表达式是c语言中最难入门的东西(比c的声明规则的入门还难),只要你在这方面入门了,你才算是真正的进入c的门槛,否则,只是看看老谭的书,而没有主动去研究(在凭着某些大师的著作中的只言片语去研究出某一方面的知识),那想进步是很难的。只看老谭的c就好比学医只知道人有手又脚却不知人还有五脏六腑。
有些人说别在c上面浪费功夫,学了基本的c后就应该要实战,可是,如果仅仅是看老谭的c,我认为远远不够。Top
10 楼niuman(青橄榄)回复于 2005-04-20 17:31:28 得分 6
关于c语言中多维数组指针我有点不明白,例如数组a[2][3],书中说a是指向0号分数组的指针,a[0]是0号分数组的数组名,指向a[0][0]的指针。他们在数值上应该是相等的。但书上又说a与a[0]的地址的值是相同的。那不就成了a[0]与&a[0]的值是相同的?a[0]到底是什么?里面存放的值又是什么?
---------------------------------------------------
首先提到一个概念:多维数组可以理解为数组的数组,
即:二维数组是由多个一维数组元素组成的一维数组。
在这里a有两种解释,与上下文有关。
1):代表二维数组,如:sizeof(a)==6(即:数组元素个数)
2):一维数组指针,即:指向第一个元素的指针
(这里的第一个元素是一个由三个元素组成的一维数组),
同样的,a[0]也有两种解释
1):一维数组,即a数组的第一个元素,sizeof(a[0])==3
2): 指向数组a[0]的第一个元素a[0][0]
a==&a[0], a[0]==&a[0][0]
总结:a可以理解为一维数组指针,a[0]可以理解为简单的指针
指针a,a[0]存放的地址值都是&a[0][0],但是类型不同
Top
11 楼xjp6688(大平/要做必须最好)回复于 2005-04-21 08:13:30 得分 0
a[0]可以理解多唯数组的第一行!
还有多唯数组可以理解成数组的数组,实际数组在内存中是线性的!Top
12 楼jeanssun(西部牛仔||孙耀文)回复于 2005-04-21 08:42:34 得分 0
二楼的同志说的挺好的,赞同
Top
13 楼streetballerym(streetballerym)回复于 2005-04-21 10:01:56 得分 0
哦,知道鸟!谢谢大家帮忙。Top




