在下面的代码中:
using namespace std;
void swap(char * x,char * y){
char tmp = * x; * x = * y; * y = tmp;
}
int main(){
char a [] =“ab”; // char * a =“ab”;
交换((a + 0),(a + 1)); COUT<<一个;…
char a[]="ab"; 是一个局部非const数组。您可以修改非常量数组。
char a[]="ab";
字符串文字是const。初始化指向字符串文字的指针时,它指向一个const对象。修改const对象的行为是未定义的。
即使是初始化 char *a ="ab"; 是不正确的(因为C ++ 11),因为字符串文字不会隐式转换为指向非const的指针 char 。
char *a ="ab";
char
这是纯C概念,在C编程语言中阅读5.5字符指针和函数,您将知道答案。问题是你不能改变一个字符串常量。