如何正确传递String数组作为函数参数?

时间:2014-02-20 11:48:36

标签: c arrays string

我知道之前已经多次询问过这个问题。但是,我无法摆脱警告。

void function (char** cppStringArray);
int main(void) {
    char cStringArray[5][512]={"","","","",""}; //Array of 5 Strings (char arrays) of 512 characters
    function (cStringArray); //warning: incompatible pointer type
    return 0;
}

如何摆脱警告?如果我将Stringarray声明为char* cStringArray[5],它就可以工作。

2 个答案:

答案 0 :(得分:1)

如果您的字符串数组保留这些大小,那么最好的方法是使用

void function (char (* cppStringArray)[512], size_t num_strings);

传递

function(cStringArray, sizeof(*cStringArray)/sizeof(cStringArray));

问题是char**不等同于char (*)[512]。前者是指向char的指针。后者是指向512个字符的块的指针。

答案 1 :(得分:1)

定义如下的功能。

void function (char cppStringArray[5][512]);