分享二维数组的本质,给对二维数组还是不太明白的朋友。。
c语言吧
全部回复
仅看楼主
level 9
徐星xu 楼主
本人一直对这个语句看的我头大:
printf("%d\n", *(*(a+0)+0));
现在看懂了分享给大家:
2014年09月15日 02点09分 1
level 13
厉害啊!绝对厉害!!!
2014年09月15日 03点09分 2
level 11
难道不是 a==a[0][0] ??[疑问]
2014年09月15日 04点09分 3
数组名是一个常量,数组内的元素是变量。这是一点很重要。刚学的时候我也没弄明白。a是数组名,a[0][0]在声明时表示的是一个二维数组,在表达式中是数组 的一个元素。只有:*(*(a+0)+0) == a[0][0]; 时表达式的左边等于右边.
2014年09月15日 06点09分
回复 徐星xu :“在表达式中是数组 的一个元素。”这句话写错了,是在语句中,不是在表达式中。。
2014年09月15日 06点09分
回复 徐星xu :数组名是常指针
2014年09月16日 17点09分
level 14
a≠a[0]
楼主第一句话就错了
2014年09月15日 04点09分 4
打错了是a[0]的地址
2014年09月15日 06点09分
level 12
可怜的楼主,又是一个无法通过技术鉴定的技术贴。。。
2014年09月15日 04点09分 5
不好意思,表达上出了点错,是a[0]的地址。
2014年09月15日 06点09分
level 11
楼中楼没格式,发这来:
首先,a[2][3]这个数组的所有元素:
a[0][0], a[0][1], a[0][2],
a[1][0], a[1][1], a[1][2]
然后楼主的注释里不符合我个人的理解的:
1. 数组a的第一个元素是a[0][0]
2. "数组a的第一个元素为:{1,2,3}",大概是说第一个元素的值吧,第一个元素a[0][0]的值难道不是{1,2,3},{4,5,6}中的第一个?( 1 )[疑问]
3. 数组(a+0)表示的是一个地址不错,但不是"数组{1,2,3}"的地址,而是a[0][0]的地址+0
解释完毕.有哪儿不对的求轻喷~
2014年09月15日 06点09分 6
内容有点多,在这写不下,只好发私信给你了。。
2014年09月16日 12点09分
level 7
请问对于二维数组,*a取内容是什么?定义一个指针变量int *p=a是否正确?
2014年09月16日 12点09分 7
对于二维数组,*a这样的取内容是错误的,定义一个指向二维数组的指针要用数组指针如:int * p[][3] = a;这样才对。。
2014年09月16日 15点09分
回复 徐星xu :我能说你错了吗?定义一个二位数组指针变量只需要int *p=*a即可,定义好后,便能引用每一个元素,你根本没弄懂*的真意
2014年09月16日 15点09分
回复 SkyWing云羽 :你写一个源码证实下你说的观点,发到我的私信内。。。一定是要二维数组的噢!!
2014年09月16日 15点09分
正确,程序没问题,看你怎么用。比如char *p=a,double *p=a,float *p=&a 都没问题,看你会用不
2014年09月16日 16点09分
level 9
→_→
2014年09月16日 16点09分 8
level 7
           ——就算我是福尔摩斯,也无法正确推断出喜欢女孩的内心啊       
2014年09月16日 16点09分 9
level 10
二维数字只是人类YY出来的一种数据形态,实质上就是一个一维数组换了个写法而已
2014年09月16日 17点09分 10
那样写是为了代码的维护方便,发给别人一看就明白。
2014年09月16日 17点09分
level 8
卡卡西专业是咯在死他一看提咯我他妈拖啊讨论组
2014年09月16日 18点09分 11
level 2
lz
再挖掘下看看, 比如a[1][1],*(a+1)+1, a+1 ,*(a+1)和&a[1][1] 的结果,分辨下这几个的区别,这样我感觉应该差不多了。
2014年09月16日 20点09分 12
level 7
我懂了。。
2014年09月17日 06点09分 13
level 5
@SkyWing云羽
int a[2][3]=
{
{1,2,3},
{4,5,6}
};
/** 打印a[1][2] **/
char *cp = a;
double *dp = a[0];
float *fp = &a;
int p = a;
printf("%d %d\n", *(cp+20), *((int*)(dp+2)+1));
printf("%d %d\n", *(int *)(fp+5), *(char *)(p+20));
2014年09月17日 10点09分 14
搞什么飞机?你知道你错了多少吗?自己通过编译了再发出来说吧
2014年09月17日 11点09分
回复 去年买了个包啊 :&a与a 相等的 因为a是数组
2014年09月17日 13点09分
回复 SkyWing云羽 :不知道你用的什么编译器,我表示gcc编过
2014年09月17日 13点09分
回复 AC_loner 能不扯淡吗?a是数组?你最多说个a是数组指针,是数组首地址,是指针常量,数组是个变量好吗?不要把地址和空间混为一潭好吗?我用的vc6,你这个程序错的没边了,修得懒得修改
2014年09月17日 14点09分
1