静态矩阵投射到指针
Static Matrix Casting to a pointer
我有矩阵M:
float M[4][3] = {
0, 0, 0,
0, 1, 1,
1, 0, 1,
1, 1, 0};
我需要使用方法"foo"来铸造M:
foo(float **matrix){
printf("%f",matrix[0][0]);
}
我使用成功编译了代码
foo( (float**) M )
但当我执行它时,我遇到了一个段错误。怎么了?我在Ubuntu Oneiric中使用g++。
提前谢谢。
好的,谢谢Luchian,但使用怎么样
float **M = new float*[4];
M[0] = {0,0,0};
我知道它不编译,但有类似的东西吗?
如果您想(或需要)自己执行arith,请避免强制转换:
void foo(float **pmatrix)
{
float *matrix = *pmatrix;
for (int r = 0; r < 4; ++r)
{
for (int c = 0; c < 3; ++c)
printf("%f ", matrix[(r * 3) + c]);
printf("n");
}
}
float M[4][3] = {
0, 0, 0,
0, 1, 1,
1, 0, 1,
1, 1, 0
};
int main()
{
float *p = &M[0][0];
foo(&p);
}
但是,如果可能的话,请遵循Luchian的建议并更正声明,这段代码很难看,而且容易出错。
好的,旧的最好的:
float **M = new float*[4];
for(int i=0; i<4; i++){
M[i] = new float[3];
for(int j=0; j<3; j++){
M[i][j] = something...
}
}
相关文章:
- 如何在类内部使用和访问静态指针到成员值s_ptm?
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- decltype:使用指针访问类的静态成员
- 类的静态结构指针声明在C++
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 指向重载静态成员的函数指针 - 在unique_ptr中用作自定义删除器
- 指向模板上下文中的成员函数或静态函数的指针
- 指向 POD 类型的指针之间的静态转换与重新解释转换
- C++:如何返回指向非静态成员函数的指针?
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- 函数指针静态,构造函数
- 是否通过单元化指针UB访问静态类成员
- 静态对象指针
- 如何使用指向动态数组的静态指针创建类?
- 静态指针指向这个为mock for googletest定义的类内部
- 为静态类创建指向对象的指针是否合法?
- 指向无静态方法的指针静态方法
- 如何将原始指针静态化为指向固定数组的指针
- 显式销毁非指针静态对象