C++ 字符指针数组

C++ 字符指针数组,c++,pointers,C++,Pointers,下面是一个函数原型: void foobar(char* array[]); 但是我该如何调用这个函数,用什么参数呢?有人能给我一个简单的例子吗?< /P> < P>从数组名称转换规则到指针的引用在C和C++中都是相同的: 由于数组会立即衰减为指针,因此数组永远不会真正传递给函数。您可以假设函数接收数组作为参数,并通过将相应的参数声明为数组来说明: void f(char a[]) { ... } 从字面上解释,此声明没有任何用处,因此编译器会转过身,假装您编写了一个指针声明,因为函数实际上

下面是一个函数原型:

void foobar(char* array[]);

但是我该如何调用这个函数,用什么参数呢?有人能给我一个简单的例子吗?< /P> < P>从数组名称转换规则到指针的引用在C和C++中都是相同的:

由于数组会立即衰减为指针,因此数组永远不会真正传递给函数。您可以假设函数接收数组作为参数,并通过将相应的参数声明为数组来说明:

void f(char a[])
{ ... }
从字面上解释,此声明没有任何用处,因此编译器会转过身,假装您编写了一个指针声明,因为函数实际上会收到:

void f(char *a)
{ ... } 
所以

void foobar(char* array[]);  
相当于

void foobar(char** array);

您需要将char**类型的参数传递给此函数

感谢您的回复和评论。这是我想到的,它似乎有效。不过,我不太清楚为什么会这样。是否有人能确认这确实是“正确”代码:

void foobar(char* array[]);

void main() {

    char* t[3];
    t[0] = "first";
    t[1] = "second";
    t[2] = "third";
    foobar(t);
}

void foobar(char* array[]) {

    cout << *(array + 0) << endl;
    cout << *(array + 1) << endl;
    cout << *(array + 2) << endl;
}

输入应该是指向char pointerDepends.的指针。。你想让它做什么。。。?!?!指向指针的指针让我害怕…当然,这可能来自char*arr[]的隐式转换。有人能给我一个简单的例子吗?我是说实际的代码?也许使用字符串文字?或者这是错的?我觉得它几乎是正确的,但是如果你的函数不修改它,你应该把参数改成const char*const[]。如果t指向字符串文字,则t应为const char*t[3]。
first
second
third