这是两个概念。
二维数组和一维数组比较:例如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是一样的。
温馨提示:答案为网友推荐,仅供参考