c++ 0xC0000005:Access Violation错误 求真相 求解释
#include
using namespace std;
void main()
{
char a[] = "dfdfd,dfd";///直接用c指向常量字符串之后,你尝试修改常量字符串的内容,就会挂,放数组里即可
char *c = a;///因为不允许修改常量
char *s = c;
for(; *c; c++)
{
*s = 'a';
s++;
}
cout<
}
指针c已经指向字符串结束之后的位置了(可能非法),从而cout输出时访问 越界。
另外,这个程序目的是将字符串c的所有字符替换为'a'么?不需要引入字符串s的,这个程序中的s指针没什么作用,可以直接用c代替。
int main()
{
char *c = "dfdfd,dfd";
for(; *c; c++)
*c = 'a';
cout<
}
*s = 'a';错误,不允许修改。
char *c = "dfdfd,dfd";这样定义,则为只读,不可以更改。
而且,c和s的指针值都变了,一般会保留一个不动得。不然输出就没法找回原来的起始位置了。
修改成如下吧。
char c[] = "dfdfd,dfd";
char *s =c;
for(; *s; s++)
*s = 'a';
cout<
return 0;
访问越界,将char *c改为char c,中括号里是字符串的大小,由你自己定,
char c= "dfdfd,dfd";
char *p=c;
while(*p !='\0')
{
*p++ = 'a';
}
cout<
标签:c++,0xC0000005,Access