你传的是字符串常量, 如果要用字符指针接收,必须是 const修饰,标记它是不可修改的才行
char * name
// 上面这种字符指针入参,都加上 const修饰
const char * name
不知道你这个问题是否已经解决, 如果还没有解决的话:#include<stdio.h>
void testfunc(const char *teststr)
{
char *temp;
temp = teststr;
printf("before change, the teststr is : %s\r\n", teststr);
temp[1] = 'C';
printf("after change, the teststr is : %s\r\n", teststr);
return;
}
int main()
{
char teststr[20] = "hello world.";
testfunc(teststr);
return 0;
}
报错信息:
D:\myproject\tempfiles_for_c_c++\blanckt.cpp|6|error: invalid conversion from 'const char*' to 'char*' [-fpermissive]|
const修饰字符串指针,表明teststr指向的内容不可更改。直接将指针的值复制给一个临时字符串指针变量,编译器会报错拦截。
这里编译器的告警还是做得很不错的。当然,这里仅仅只是个类型转换错误的告警。