ubb*_*bdd -1 c++ string copy character
我试图在以下代码中实现一个简单的字符串副本.
但是,我在"*d =*c;"行中遇到了运行时错误.
谁能告诉我这有什么问题?
void test3()
{
char *a="123456";
char *b="000000";
char *c=a;
char *d=b;
while(*c){
*d = *c;
cout << *c << endl;
c++;
d++;
}
*d='\0';
}
Run Code Online (Sandbox Code Playgroud)
您无法更改const数据.您提供的这些字符串(文字字符串)存储在程序的只读区域中.实际上,您在程序中提供的任何字符串文字都"000000"被认为是const char*(指向常量字符的指针),因此不允许(至少不建议)修改它们.
基本上,字符串litterals是不变的,不能更改.在以下行中:
char *a="123456";
Run Code Online (Sandbox Code Playgroud)
char *a应该替换为const char * a因为a指向一块常量内存.在函数的下方,您尝试更改常量内存块,这会产生运行时错误.
要获得可以在此类函数中使用的真实字符数组,您应该使用:
char a[] = "123456";
Run Code Online (Sandbox Code Playgroud)
这将生成一个可以自由操作的可变(非常量)数组.
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |