读书人

还是关于指针的有关问题

发布时间: 2012-04-17 15:06:33 作者: rapoo

还是关于指针的问题
最近在学指针,感觉有点头大。
#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指向一个局部数组。不再是个常量,而是变量了。

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

读书人网 >C++

热点推荐