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

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

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语言的指针而已。

你可能感兴趣的:(c,c,指针)