更改指针变量的内容

Sim*_*ity 5 c++ pointers

在这段代码中:

#include <iostream>
int main()
{
const char* name = "Abc";
std::cout<<*name<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何更改指针变量的内容,而不是指向它的内容?

而且,为什么我只是A从这个程序获得输出?

谢谢.

Pab*_*ruz 11

你得到一个char因为你正在取消引用一个char*指针.

您可以通过执行以下操作更改内容:

*a = 'B'; // your char* would contain "Bbc"
a[0] = 'B'; // your char* would contain "Bbc"
a[1] = 'B'; // your char* would contain "ABc"
a[2] = 'B'; // your char* would contain "AbB"
Run Code Online (Sandbox Code Playgroud)

但是,更改字符串文字的内容在C中具有未定义的行为.所以你不应该这样做.相反,您需要动态填充.有这样的事情:char*

char *a;
a = malloc(sizeof(char)*100); // a string with a maximum of 99 chars
strcpy(a, "Abc");
// now you can safely change char* contents:
a[0] = '1';
a[1] = '1';
a[2] = '1';
printf("%s", a); // will print 111
Run Code Online (Sandbox Code Playgroud)

在像C这样的语言中,字符串操作并不容易.由于您使用的语法,您似乎正在使用C++编译器编译代码,然后您可以string尝试给类,而不是使用指针char来处理您的字符串.