#include<iostream>
using namespace std;
int main()
{
char *const name= "chen";
cout << name << endl;
name[3]= 'a';
cout << name;
}
按照课本上常指针写的,为什么会有写入访问权限异常啊
刚去问了下大神,他说单独的字符串是在常量池中的,他的修改是由系统完成的,你先定义a[]="123",再让name = a,相当于向系统去申请修改,然后系统进行修改。如果直接指向字符串,相当于权限越级,你的修改无效
const修饰符:保证数据可读不可写,你前面已经定义了name指针指向字符串"chen",那么后面对该指针任何的修改都会报错
name只是一个指针, 没有分配对应的内存空间. chen这个字符串在常量区,
const去掉 , 用C语言应该可以, 但是不合法,
自我感觉不知道怎么用语言描述,你可思考一下下面的程序
#include<iostream>
using namespace std;
int main()
{
char p[] = "chen";
char a[] = "abc";
char *const name = p;
name[2] = 'a';
//name = a;报错
cout << name << endl;
cout << name[0];
}
对比一下这个
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
char *const name = (char *)malloc(sizeof(char) * 4);
name[0] = 'a';
name[1] = 'b';
name[2] = '\0';
//name = "abc";报错
cout << name << endl;
cout << name[0];
}