[英]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.