关于二维数组和一维指针数组的区别

如题所述

这是两个概念。
二维数组和一维数组比较:例如int a[10][10],和int b[10],其实在本质上没有区别,就是一个是10 x 10 = 100个成员,一个只有10个成员。我可以这样:int* c = a;这个时候就可以c[0],c[1]...c[99],这样访问。
不同的地方:a[1] -- 如果一组10个,这个表示的第1(0开始)组的开始地址。a[1]和&a[1][0]相同。而b[1]就是第1个数。
说道一维指针数组,int* d[10], 本质上和int b[10]没有区别,b里边存了10个int值,而d里边存了10个int地址。地址也是值,只是我们通常不直接用这个地址,而是用这个地址指向的值。d中存了10个值,值的类型是地址,10个地址指向10个别的地方(也有可能相同,看开发的人怎么设置的)。
如果我们用的时候,int d1 = 100; d[1] = &d1; 只是将d[1]的值当做指针来用,设置值的时候要复制一个对应类型的指针。提供给别的地方用的时候也是当成指针用,如int* ptr = d[1];还可以多一个取值操作 int value = *d[1]; *号是取值符号。如果你把int*当做一个整体,其实int*d,和int b是一样的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-22

    数组首指针是数组第一个元素(下标为0的)的指针。一维数组的元素类型,它的指针什么型的,比如int a[4],*p;,那么p就是int *型的。

    二维数组的第一个元素是数组,所以它的指针的类型是一个一维数组的类型,如int a[3][5];,它的指针应该是int (*p)[5];这样来声明,p就是指向一个有5个int型元素的一维数组的指针,否则p就与a不匹配了。

本回答被网友采纳
第2个回答  2020-05-09
二维数组拥有两个维数相乘那么多同类型的元素,一维指针数组只有维数那么多个某类型的指针元素。这二者似乎没有可比性,维数不同,元素类型一般也不同。
相似回答