将c字符串传递给函数

bun*_*nny -1 c string

我有一个关于将c字符串传递给函数的问题.

如果我有一个功能:

void reverse(char* c){
   //here is the reverse code
}
Run Code Online (Sandbox Code Playgroud)

主要:

int main(){
   char* c1="abcd";
   char c2[5]="abcd";
   char * c3=new char[5];
   c3="abcd";
}
Run Code Online (Sandbox Code Playgroud)

在我的测试中,只有c1不允许传入函数,其他两个工作正常.我想知道为什么c1是错误的用法?非常感谢你!

Kei*_*son 5

你的代码是C++,而不是C; new char[5]是C中的语法错误

C和C++是两种不同的语言.在C++中,字符串文字是const,并且将字符串文字传递给接受char*参数的函数是一个错误.您应该从C++编译器获得一条错误消息(您没有打算向我们展示).

(如果你使用的是C编译器,它会接受一个类似的调用reverse("foo"),但它会抱怨new char[5].)