繁体   English   中英

字符指针数组

[英]Arrays of char pointers

这是一个函数原型:

void foobar(char* array[]);

但是,我将如何调用该函数以及带有哪些参数呢? 有人可以给我一个简单的例子吗?

c-faq引用(因为数组名称到指针的转换规则在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;
}

输出为:

first
second
third

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM