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

原创 2012年03月23日 15:47:34

最近写程序的时候一直在用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和指针学习笔记】深入理解字符串常量

思考下列表达式代表什么意思??? 1:“zyh_helen”+ 1 2: *“zyh_helen” 3:“zyh_helen”[2]。 如果你觉得上述表达式不了解,甚至认为他们看上去像垃圾的话...

C编程之字符串与指针教程

  • 2011年03月11日 21:51
  • 638KB
  • 下载

C语音指针于字符串技巧

  • 2014年07月10日 18:47
  • 30KB
  • 下载

黑马程序员—C学习笔记—指针字符串与其内存细节

———–Java培训、Android培训、IOS培训、.Net培训、期待与您交流! 本节涉及到指针字符串和数组字符串的存储等基本问题,涉及很多细节,详细变化请参考代码,谢谢。...

C_指针与字符串

  • 2015年05月22日 20:34
  • 18KB
  • 下载

C指针、数组、字符串、结构体之间的联系

一、指针、数组、字符串、结构体、函数1、指针定义:指针就是地址,一串16进制的编码 指针的定义://1、指针操作变量 int *p;//定义一个整形指针 p代表的是地址,*p代表的是地址指向的值...

第九章 字符串、字符和字节[C和指针]

字符串是一种重要的数据类型,但是C语言并没有显式字符串数据类型,因为字符串以字符串常量的形式出现或存储于字符串数组中。 常用字符串函数如下: /*字符串长度计算函数 strlen,返回字符数*/ ...

《C和指针》——在一组字符串中查找

程序中value是要查找的字符,strings指向字符串列表程序1:#include #define TRUE 1 #define FALSE 0int find_char(char **strin...

c学习之指针与字符串

字符串可以用数组(指针常量)或指针变量表示,如下: char *str1=”hello world”;      //事实上是把字符串的地址赋给指针或变量 char str2[12]=”hello w...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C中对字符串和指针的理解
举报原因:
原因补充:

(最多只允许输入30个字)