c/c++ 一维数组指针转二维数组指针


有时候会遇到这样的函数:

void func(float m[3][3])
{
}

而你手头上有个数据:

float data[9];

直接用函数调用,会提示类型转换错误,那么怎么传进去?

传统方法1,生成一个二维数组指针:

float* p[3] = ( data, data + 3, data + 6 };
func(p);

另外一种方法,比较绕:

typedef float mat3[3][3];  // 声明一个3x3数组类型
func(*reinterpret_cast<mat3*>(data));

解释:

把 data 转换成 mat3* 类型的指针,再取值。直接 mat3(data) 同样提示类型转换失败。

另外的写法是:

func(*reinterpret_cast<float(*)[3][3]>(data);

vc、bcc32、gcc 测试通过。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM