菜鸟求助啊~关于C语言里面的指针问题!
这段时间在学习Brain W.Kernighan与Dennis M.Ritchie两位大神的《the c programming language》这本书~然后书中有个例子~没太理解~想运行下看看..结果是错的..main()函数是自己写的..strcpy(char *, char*)是书中的例子~
#include <stdio.h>
void strcpy(char *, char *);
void main()
{
char *a = "hello!";
char *b = "hello world!";
strcpy(b,a);
printf("%s\n",a);
printf("%s\n",b);
}
void strcpy(char *s, char *t)
{
while(*s++ = *t++)
;
}
调试的时候显示的错误是:Pro1.exe 中的 0x011e1a26 处有未经处理的异常: 0xC0000005: 写入位置 0x011e5818 时发生访问冲突
咋看都没看出来哪里不对了~还有,while()循环是如何退出的呢?是判断*s为0 所以退出了?因为赋值的结果总是为1吧? c
[解决办法]
出错是因为字符串在常量区,不能修改。这个和编译器有关。这样修改:
char a[]= "hello!";
char b[] = "hello world!";