【错误记录】二维数组初始化,以二级指针传递函数参数

来源:互联网 发布:sql server 2008 sp4 编辑:程序博客网 时间:2024/05/16 18:21

直接上代码, 在开始的时候,我的代码如下:

typedef unsigned char u8;void init_func(){u8 pTempStringParamArray[2][4]={0};sprintf(pTempStringParamArray[0],"5");sprintf(pTempStringParamArray[1],"115");use_func(pTempStringParamArray);}void use_func(u8 *pInputStringArray[]){; // do other thing.}


在编译的时候,总是会报警告, 说use_func 传入参数不匹配。但是不会影响程序的执行。

 

后期,有两种解决方案, 一种是将 use_func 的形参改为: u8 *pInputStringArray[4] 。 但是这样会限制数组每一行的数据量。

作为程序员的我们,最好做到最高的通用性, 于是听从老大的建议, 使用二级指针来解决此处的警告和限制。

修改后,代码如下:

typedef unsigned char u8;void init_func(){u8 pTempStringParamArray[2][4]={0};sprintf(pTempStringParamArray[0],"5");sprintf(pTempStringParamArray[1],"115");use_func((u8 **)pTempStringParamArray);}void use_func(u8 **pInputStringArray){; // do other thing.}


其实是很简单的问题,C语言的指针而已。