【发布时间】:2009-09-02 23:47:17
【问题描述】:
特别是在 C 中(我想这也适用于 C++),两者有什么区别
char str[4] = "abc";
char *cstr = {"abc"};
当我尝试将“abc”传递给接受 char** 的函数时出现问题
void f(char** s)
{
fprintf(stderr, "%s", *s);
}
执行以下操作会产生编译器错误。如果转换为 char**(让编译器满意)程序段错误。
f(&str);
但是以下工作正常
f(&cstr[0]);
【问题讨论】:
-
您的代码有问题。如果可以成功编译
f(&cstr[0]),那么要么cstr不是char*,要么f的参数s不是char**。表达式&cstr[0]的类型是char*(实际上和刚才的cstr完全一样)。请显示导致错误的实际代码。如果是这个,那你用的是什么 C++ 编译器?