vv[][]是二维数组,*v是指针, 那么 double (*vv)[6] = (double (*)[6])v;是什么意思?

如题所述

double (*vv)[6] :指向double[6]的指针
类型是double (*)[6]
变量是vv
之所以有这么怪的写法,是因为[]的优先级太高了,如果 写
double *vv[6] ,那么vv首先是数组,数组的成员是double指针
所以要用括号把*vv括起来,表示它首先是一个指针,指针的类型是double[6]
至于 (double (*)[6])v,是一个强制类型转换
double vv[][6]的类型是二维数组,然而c语言准确来说,没有二维数组,取而代之的是数组的数组,所以这里应该理解为,double[6]的数组。
当然这个层次可以增加
例如double vvv[][3][6],理解为double[3][6]的数组,
继而理解为double[6]的数组的数组,换成基础类型来说,就是double的数组的数组的数组。
数组可以在某些情况下转化成指针,那么double[6]的数组,可以理解为double[6]的指针,也就是说double [][6]的类型,和double (*)[6]是一致的。
温馨提示:答案为网友推荐,仅供参考
相似回答