指针问题
char *getstring(void)
{
char *P = "aaaaaaaa";
return p;
}
void main(void)
{
char *q=NULL;
q=getsring(void);
printf("%s",q);
}
分析一下;为什么没有正确结果出来。
我认为P为指针常量,在静态存储区,传过来前是不会消失的。
结果应该是正确的啊,
看到一种解释说返回的始终只是同一个“只读”内存块,什么意思???
哎
#include <stdio.h>
char *getstring(void)
{
char *p = "aaaaaaaa";
printf("%s",p);
printf("%s",p+1);
return p;
}
void main(void)
{
char *q=NULL;
q=getstring();
getch();
printf("%s",q);
}
楼上的说对了,在加入以上两条语句printf(),跟getch()后发现*(p+1)的值可以改变,或许真的是在存在栈上
而不是在静态存储区。如果是这样,那么这程序肯定是错的了,
我用的是win-tc环境。
这个问题在林锐的那个《C/C++高质量编程》有解说。即使是在静态存储区也会有问题,但我没看明白。