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);
}