#include<iostream>
#include<string.h>
using namespace std;
void main()
{
char *p1= "abc";// ***
char *p2 = "de";
for(int i=0;i<2;i++)
{
cout << p1[1+i] << endl;
cout << p2[i] << endl;
p1[1+i] = p2[i];//跟踪调试时此行有内存访问错误
}
}
而将***所在行改为char p1[]= "abc";则就不会有错误了。请高手帮我分析一下原理吧
------解决方案--------------------------------------------------------
p1是指向字符串首地址的,只能在声明时赋值。
例如:char *p1=“abc”;是正确的
但是如下就是错误的:
char *p1;
*p1=“abc”;
------解决方案--------------------------------------------------------
char *p1= "abc";// abc 分配在静态栈上,属于静态参数。不能进行修改
char *p2 = "de";// de 也分配在静态栈上,属于静态参数。不能进行修改