【发布时间】:2017-05-30 12:03:48
【问题描述】:
为什么 memset 函数在带有 char 指针的 c++ 函数中不起作用?
void change(char* input){
memset(input, 'a', strlen(input));
}
int main(){
char* p = "foo";
cout << p << endl;
change(p);
cout << p << endl;
}
【问题讨论】:
-
此代码在 C++11 及更高版本中会产生编译错误。请使用现代编译器
-
请注意,可修改的字符串文字在 C++ 中是未定义的行为
-
即使在较旧的编译器上,这也应该会产生带有正确设置的警告,除非编译器真的很糟糕。
-
没有错误或警告但打印原始值
-
是的,但我的指针不是数组
标签: c++ function pointers memset