在这段代码中:
#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来处理您的字符串.
| 归档时间: |
|
| 查看次数: |
9176 次 |
| 最近记录: |