C语言中的字符串指针问题

[复制链接]
查看11 | 回复5 | 2011-9-7 12:22:08 | 显示全部楼层 |阅读模式
在编译期间,编译器得到的结果是,指针a和b指向的是静态区间,这段区域是不能随意改变的,而在后续的 while(*p2++=*p1++);中,却给p2也就是b赋值了,这样会出错的,如果一定要做这样的功能,建议在开始声明两个字符串的时候,用char a[]...
回复

使用道具 举报

千问 | 2011-9-7 12:22:08 | 显示全部楼层
#includeint main(void){
char a[]="I am a teacher.";
char b[]="I am a student.";
char *p1=a,*p2=b;
while(*p2++=*p1++);
prin...
回复

使用道具 举报

千问 | 2011-9-7 12:22:08 | 显示全部楼层
原来定义的是字符串常量,是不能做哪些操作的改为char a[]="I am a teacher.";char b[]="I am a student."; 就可以了...
回复

使用道具 举报

千问 | 2011-9-7 12:22:08 | 显示全部楼层
char *a="I am a teacher."这样a指向的是静态局的内存,一般不能改动如果改成 char a[]="I am a teacher."char b[]="I am a student."应该可以,注意数组大小,不要越界...
回复

使用道具 举报

千问 | 2011-9-7 12:22:08 | 显示全部楼层
while(*p2++=*p1++);改成while((*p2++=*p1++)!= 0x00);...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行