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

还是关于指针的有关问题

2012-04-17 
还是关于指针的问题最近在学指针,感觉有点头大。#include stdio.hvoid main(){char *aI am a teacher.

还是关于指针的问题
最近在学指针,感觉有点头大。
#include <stdio.h>
void main()
{
char *a="I am a teacher.",*b="You are a student.",*p1,*p2;
p1=a;p2=b;
for(;*p1!='\0';p1++,p2++)
*p2=*p1;
*p2='\0';
printf("\nstring a=%s\nstring b=%s\n",a,b);
}
为什么编译不能通过。
把*b换成b[]就能通过了。

[解决办法]
char *a="I am a teacher.",*b="You are a student."
这个a和b所指的是常量区,常量区的值不能修改。
你可以理解为const char *a="I am a teacher."
而char b[]="XXXXX";
它是在栈区开辟的空间,栈区的值可以修改。
[解决办法]
char *a="I am a teacher.",*b="You are a student."这样的写法使得a、b指向了字符串常量。

既然是常量,你又怎么能够改变它?

char a[]="I am a teacher.",b[]="You are a student."这样的写法使得a、b指向一个局部数组。不再是个常量,而是变量了。

你想要改变变量的值,那自然是没问题了。

热点排行