能不能对此字符串赋值?

时间:2023-01-04 11:27:04
程序如下:
#include<iostream>
using namespace std;

int main(){
char *p="John";
p[2]='a';
for(int i=0;i<4;i++)
{cout<<p[i];}

return 0;
}
编译时没出错,运行时系统报错,这是为何?

12 个解决方案

#1


#include<iostream>
using namespace std;

int main(){
char p[]="John";
p[2]='a';
for(int i=0;i<4;i++)
{cout<<p[i];}

return 0;
}

#2


#include<iostream>
using namespace std;

int main(){
char *p;
char a[100]="John";
p=a;
p[2]='a';
for(int i=0;i<4;i++)
{cout<<p[i];}

return 0;
}

#3


你没有对指针限定范围,又要把它当成数组一样使用就会出错的。。


我也不知道为什么,,,很久不看指针了,,太烦了。。。。


我现在改学JAVA...

#4


char *p="John"; //相当于const型的,值不能改变

#5


我知道这些改法,我是想知道为何不可运行。是const作怪吗?

#6


哦,是这样

#7


这和编译器有关。
http://www.csdn.com.cn/program/3727.htm

#8


改为*(p+2)='a';

#9


不好意思,我试过上法,不行!

#10


char *p="John";//常量字符串,不能修改其内容。

#11


回复人: dongpy(51-->ARM) ( ) 信誉:100 
可以改成用数组char p[]= "John";

#12


原因就是
回复人: dongpy(51-->ARM) ( ) 信誉:100  2005-03-09 09:43:00  得分: 0  
 
 
   char *p="John";//常量字符串,不能修改其内容。
  
 

#1


#include<iostream>
using namespace std;

int main(){
char p[]="John";
p[2]='a';
for(int i=0;i<4;i++)
{cout<<p[i];}

return 0;
}

#2


#include<iostream>
using namespace std;

int main(){
char *p;
char a[100]="John";
p=a;
p[2]='a';
for(int i=0;i<4;i++)
{cout<<p[i];}

return 0;
}

#3


你没有对指针限定范围,又要把它当成数组一样使用就会出错的。。


我也不知道为什么,,,很久不看指针了,,太烦了。。。。


我现在改学JAVA...

#4


char *p="John"; //相当于const型的,值不能改变

#5


我知道这些改法,我是想知道为何不可运行。是const作怪吗?

#6


哦,是这样

#7


这和编译器有关。
http://www.csdn.com.cn/program/3727.htm

#8


改为*(p+2)='a';

#9


不好意思,我试过上法,不行!

#10


char *p="John";//常量字符串,不能修改其内容。

#11


回复人: dongpy(51-->ARM) ( ) 信誉:100 
可以改成用数组char p[]= "John";

#12


原因就是
回复人: dongpy(51-->ARM) ( ) 信誉:100  2005-03-09 09:43:00  得分: 0  
 
 
   char *p="John";//常量字符串,不能修改其内容。