c/c++开发分享2个暗淡的数组和双指针

可能重复:
创建指向二维数组的指针

当我调用函数func4()和func5()时,我得到followinfg错误:

func4()错误:无法将参数’1’的’short int(*)[3]’转换为’short int **’为’int func4(short int **)’| func5()错误:无法将参数’1’的’short int(*)[3]’转换为’short int **’为’int func5(short int **)’|

如何更正调用函数func4()和func5()时的错误? 这是我的代码:

#include  int func1(short mat[][3]); int func2(short (*mat)[3]); int func3(short *mat); int func4(short **mat); int func5(short *mat[3]); int main() { short mat[3][3],i,j; for(i = 0 ; i  

    如果不指定数组length or size of second dimensionlength or size of second dimension can't发送length or size of second dimension数组。 这是导致错误的原因。

    试试这个:

     int func4(short mat[][3]) { short i, j, *index[3]; for (i = 0 ; i  

    }

    Remember ,如果可以通过一种方式轻松,干净地完成某些操作,请不要尝试通过肮脏和困难的方式来完成,因为在将来修改或更新代码时会让您感到困惑。

    他们是一样的:

     int func(short **mat); int func(short *mat[]); int func(short *mat[3]); 

    short **short (*)[3]不兼容,因为它们指向的类型不同。 short **指向short *short (*)[3]指向short[3]

    你也可以试试这个:

     int funcMy(void *mat) // OK! -added by Justme0 2012/12/31 { short i, j, *index[3]; for (i = 0 ; i  

    我认为第三个function是最好的! 它使用了一个名为“展平数组”的技巧,我在C中的POINTERS中读到了这个技巧。

    方法#3(使用单个指针,数组被“展平”)================================== ==========================使用此方法,您可以创建通用例程。 维度不会出现在任何声明中,因此您可以将它们添加到forms参数列表中。

    手动数组索引可能会减慢执行速度。

    问题在于func4()func5()的矩阵定义不正确。

    你将它定义为short mat[3][3] ,但在这种情况下,你实际上并没有为矩阵线分配一个指针数组。 你得到一个连续内存块的指针。

    如果希望将参数矩阵作为short int** ,则应将其定义如下:

     #include  short int** mat; for(int i = 0; i  

        以上就是c/c++开发分享2个暗淡的数组和双指针相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(XD中文网)。

        本文链接:https://xdcnz.com/10139.html