char *(*name)[2]作为函数参数

qnyhuwrf  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(103)

我需要填写一个函数,它有以下输入参数:

char * replace( const char * text, const char * (*word)[2] )

根据我的理解,函数应该返回一个字符串,并且在第一个参数中给出一个字符串。
第二个参数是一个子数组的数组,如果我没记错的话,每个子数组有两个字符串,但是*(*name)[2]是什么意思,它和**name[2]有什么区别,在函数中我该怎么调用这个数组呢?
EDIT:我如何在函数中使用这个数组?

wvt8vs2t

wvt8vs2t1#

由于函数参数的数组衰减,函数的声明等效于:

char * replace( const char * text, const char * word[][2] )

所以第二个参数必须是const char*的二维数组。

int main() {
    const char * words[1][2] = { {"hello", "world"} };
    replace("some text", words);
}
pxyaymoc

pxyaymoc2#

word是指向指向const char(1个地址)的指针的数组2的指针,而const char **word2[2]是指向const char(2个地址)的指针的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);

相关问题