直接上代码, 在开始的时候,我的代码如下:
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语言的指针而已。