为什么memset功能不起作用?

时间:2017-05-30 12:03:49

标签: c++ function pointers memset

为什么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;
}

1 个答案:

答案 0 :(得分:3)

您尝试修改字符串文字。字符串文字是只读的,你应该使用例如在声明指向它们的时候const char*

修改(或尝试修改)常量或只读数据会导致未定义的行为

如果要修改字符串,则需要使用数组:

char p[] = "foo";