北京奔驰4s店销量排名:C++中的long(*)[3][4]和为long*[3][4]是否一样?后者是否是错误的?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/05 19:19:42
C++中的long(*)[3][4]和为long*[3][4]是否一样?后者是否是错误的?
悬赏分:0 - 离问题结束还有 14 天 9 小时
C++中的long(*)[3][4]和为long*[3][4]是否一样?后者是否是错误的?
前者应该怎样解读类型?是不是一个48个LONG*的指针?还是就是一个指针变量?我不能理解呀

对于*( *( *( b + 1 ) + 1 ) + 1 ) = 5;,b返回类型为long[2][3][4]的数字3012,原类型为long[3][4],则b + 1将先进行隐式类型转换以将3012转换为long(*)[3][4],而sizeof(long[3][4])=48字节,则b + 1将返回类型为long(*)[3][4]的数字3012+48=3060,而*( b + 1 )返回类型为long[3][4]的地址类型的数字3060,再返回类型为long[3][4]的数字3060。则*( b + 1 ) + 1返回类型为long(*)[4]的数字3060+sizeof(long[4])=3076,同理,*( *( *( b + 1 ) + 1 ) + 1 )返回long类型的地址类型的数字3076+sizeof(long)=3080,将5放在3080所标识的内存中。由前面对“[]”的说明可知*( *( *( b + 1 ) + 1 ) + 1 ) = 5;等效于b[1][1][1] = 5;,可如上自行推验。应注意虽然b是多维数组,但它仍是一块连续的内存空间。

long(*)[3][4]表示指向数组的一个指针,long*[3][4]表示定义的数组都是指针。

是错的,long是什么型的数据,[3][4]的类型不同,不能用*联接。