关闭

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

标签: cexceptionaccessqq
328人阅读 评论(0) 收藏 举报
分类:

最近写程序的时候一直在用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所指向的空间中存放的是常量,不能修改。



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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:54617次
    • 积分:819
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:22篇
    • 译文:0篇
    • 评论:9条
    文章分类
    最新评论