我需要填写一个函数,它有以下输入参数:
char * replace( const char * text, const char * (*word)[2] )
根据我的理解,函数应该返回一个字符串,并且在第一个参数中给出一个字符串。第二个参数是一个子数组的数组,如果我没记错的话,每个子数组有两个字符串,但是*(*name)[2]是什么意思,它和**name[2]有什么区别,在函数中我该怎么调用这个数组呢?EDIT:我如何在函数中使用这个数组?
*(*name)[2]
**name[2]
wvt8vs2t1#
由于函数参数的数组衰减,函数的声明等效于:
char * replace( const char * text, const char * word[][2] )
所以第二个参数必须是const char*的二维数组。
const char*
int main() { const char * words[1][2] = { {"hello", "world"} }; replace("some text", words); }
pxyaymoc2#
word是指向指向const char(1个地址)的指针的数组2的指针,而const char **word2[2]是指向const char(2个地址)的指针的2个指针的数组:
const char **word2[2]
int main() { const char *words[] = { "hello", "world" }; const char *(*word)[2] = &words; const char **word2[2] = { &words[0], &words[1] }; }
你的第二个问题,“我如何调用这个数组”,没有意义。你使用了一个数组(见上)并调用了一个函数:
char *result = replace("hello world", word);
2条答案
按热度按时间wvt8vs2t1#
由于函数参数的数组衰减,函数的声明等效于:
所以第二个参数必须是
const char*
的二维数组。pxyaymoc2#
word是指向指向const char(1个地址)的指针的数组2的指针,而
const char **word2[2]
是指向const char(2个地址)的指针的2个指针的数组:你的第二个问题,“我如何调用这个数组”,没有意义。你使用了一个数组(见上)并调用了一个函数: