请教C++中,常量字符串,与字符串常量的区别。谢谢!

2024-12-14 09:50:39
推荐回答(4个)
回答1:

1)char a[10]="12234325";
char *const cp=a;
*cp='a' ; 可以;(*cp)++ 可以;
cp[2]='b';可以 ; cp++; 不可以 ,
指针是常量,所指内容是可变的。
这个是变量常指针。指向可变量的指针常量。
2)char const* pc="12234325";
或者

char a[10]="12234325"; char b[10]="abcde";
char const* pc=a;

或者
char a[10]="12234325";
char b[10]="abcde";
char const* pc;
pc=a;
pc=b;
pc="Hello";
指针是变量, 所指内容是不可变的。这个是常量指针。
指向常量的指针。

指向常量的指针变量。

pc++; 可以
pc=b; 可以

*pc=b[0];不可以*pc+=10;不可以;
3)const char* pc2; //和
2)一样,是常量指针。指向常量的指针。pc2是个变量,
所指内容是不可变的 。

通常都采用这种格式,强调常量性!
4) const char *const cpc="12345"; cpc,*cpc,cpc[0];cpc[i] ;这几个变量都不可修改;
这个是常量常指针,指向常量的不可更改的指针。指向常量的指针常量。

回答2:

char *const cp; //cp是一个常指针,指向字符串。 指针是常量,指针本身不能变
char const* pc; //pc是一个指针,指向常量字符串。 指针指向的对象是常量,对象不能变
const char* pc2; //pc2是一个指针,指向字符串常量。 同pc

回答3:

char *const cp; //cp是一个常指针,指向字符串。 指针不可变为 const
char const* pc; //pc是一个指针,指向常量字符串。 指针可变但是指向类型不可变 必须是 char数据类型
const char* pc2; //pc2是一个指针,指向字符串常量。 pc指向const char 类型 不可变

回答4:

没区别,char const*和const char*只是写法不同而已,就像你在声明一个类时,既可以用class来声明,也可以用struct来声明