const char星P是什么意思?

const char星P是什么意思?
是表示P是静态的吗?
#include <iostream>
#include<cstring>
using namespace std;

int main ()
{
string st;
const char *pc="xxx";
pc="yyy";
st=pc;
cout<<st<<endl;
cin.get();
return 0;
}

结果是yyy,可以改变了啊
最新回答
芳香的流年

2024-11-06 00:09:34

这里是const char *p;他的意思是p指向的目标空间的内容不可变化.
例如定义char c='A'; p=&c;则c的内容不可以变化.如c='B';等一些企图改变变量c的值的做法都不行.

然而p仍然是动态的,就是它还可以指向别的空间,被赋予新的地址值,只是被他指向的目标空间的内容不可变化,如上面的c值始终为'A',不可以更新,而一但p指向别处,则c就更新了.

问题补充中的变化实质上是p的值的变化,这是允许的.因为字符串出现在表达式中时它的值是它的首字母的地址,所以"xxx"和"yyy"都是地址值.
而若企图改变*p的值则是非法,例如问题补充中,企图修改"yyy"中第1个y所在位置的值则被认为是非法的.

最后我想说const char *p;与char * const p;的区别,他们恰好相反,后者是表明指针p的值不可变,但它指向目标的值可变.
例如char * const p; char c='A',m; p=&c;执行后,c='B'可以执行,但p=&m则被认为是非法.

就这么多了,希望能帮助到你.
半袖桃花

2024-11-06 11:33:01

1、它来自c/c++编程语言。
2、const char *p” (也可以写成“char const *p”) 声明了一个指向字符常量的指针, 因此不能改变它所指向的字符;
3、char * const p” 声明一个指向(可变) 字符的指针常量, 就是说, 你不能修改指针。

4、const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。
触动了心弦丶

2024-11-06 11:49:34

你是说const char*p;吗?
定义一个指向字符型的指针 所指的内存中的内容不可改变
你理解错我的意思了
pc 所指向的地址是可以改变的 只是那里的内容不可变比如pc[0]='y';就不可以 会产生编译错误
心素如简人淡如菊

2024-11-06 13:43:04

如果问的是:

const char *P;

该语句表达的是:定义一个字符型常量指针P,用于存放字符型变量的地址。

只能用地址常量赋值,不能使用字符型变量指针来赋值。

取地址可以用取地址运算符'&'

幼稚园里的幼稚鬼

2024-11-06 01:07:54

说明P指向的内容是常量

p的值可变,*p的值不能变 P指向的内容是常量,P不是常量,OK?