Pass 3D String Array as Function Parameter

Pass 3D String Array as Function Parameter

若有一3維字串陣列,是 hard code,並非動態配置而得的,想當作參數傳入函式 fun(char ***pppcAry, int nArySize),如

	{"a", "aa"} ,
	{"b", "bb"} ,
	{"c", "cc"} ,
	{"d", "dd"} ,
	{"e", "ee"}
};

fun(a, 5);

編譯時會發生如下的錯誤訊息

error C2440: '=' : cannot convert from 'char [5][2]' to 'char **'

正確的方法如下

void fun(char **ppcAry, int nSize)
{
	int i;
	for (i = 0; i <nSize; i++)
	{
		printf("{%s , %s}\n", ppcAry[2*i], ppcAry[2*i+1]);
	}
}
 
void main()
{
	char **b;
	char *a[5][2] = {
		{"a", "aa"} ,
		{"b", "bb"} ,
		{"c", "cc"} ,
		{"d", "dd"} ,
		{"e", "ee"}
	};
 
	int n = sizeof(a) / sizeof(a[0]);
	b = &(a[0][0]);
 
	fun(b, n);
}

 

Dotblogs 的標籤: ,