首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

请高手帮小弟我看一下下面的程序

2012-03-09 
请高手帮我看一下下面的程序#includeiostream#includestring.husing namespace stdvoid main(){char

请高手帮我看一下下面的程序

#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 也分配在静态栈上,属于静态参数。不能进行修改

热点排行