C中对字符串和指针的理解

最近写程序的时候一直在用C,这过程中也发现了自己不少问题。

#include <stdio.h>
main()
{
char ch[9];
char *q;
scanf("%s",ch);
q = ch + 2;
q[3] = 'y';
printf("q = %s\n\n",q);
printf("%s\n",ch);
}

在上面的代码中,如果改变q数组(暂且成为数组)中的某个值,那么ch中相应的值也会改变。

个人理解:因为q只是一个指针,它指向ch数组中的某个值的地址,系统并没有给它分配空间,所以改变q中的值也就是改变ch中的值。


#include <stdio.h>
main()
{
char *p = "asdfasdf";
char *q;
q = p + 2;
q[3] = 'y';
printf("q = %s\n\n",q);
printf("p = %s\n",p);
}

在这段代码中,在试图改变q值的时候会出现错误,调试过程中显示为“Unhandled   exception   in   ***.exe:   0xC0000005:   Access   Violation"。

我认为是因为p所指向的空间中存放的是常量,不能修改。



不知道理解的对不对,不对的话希望能给我指出来,有详细解释的就更好了。嘿嘿……

阅读更多
文章标签: c exception access qq
个人分类: C
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

C中对字符串和指针的理解

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭