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指针学习笔记(一)

第一章 认识指针 指针在C和C++中随处可见,它给程序员带来了极大的方便,指针为动态内存的分配提供了重要支持。使用指针我们可以方便的操控内存,提高程序的运行效率;同时利用指针变量我们可以实现各种数...
  • u014630623
  • u014630623
  • 2016年03月21日 21:52
  • 607

c语言 如何用指针来处理字符串?

一字符指针 1字符指针输出字符串 2字符指针处理字符串 3字符数组与字符指针处理字符串有何不同 二指针数组读者,你好! 如果你精通C,希望能得到你的斧正;如果你是初学者,希望能对你有所帮助。 ...
  • C2681595858
  • C2681595858
  • 2016年12月09日 20:48
  • 7584

C语言字符串指针(指向字符串的指针)

C语言中没有特定的字符串类型,我们通常是将字符串放在一个字符数组中,这在《C语言字符数组和字符串》中已经进行了详细讲解,这里不妨再来演示一下: #include int main(){ ...
  • u012507643
  • u012507643
  • 2016年10月25日 09:09
  • 6679

C语言中,为什么字符串可以赋值给字符指针变量

一、 C语言中,为什么字符串可以赋值给字符指针变量 char *p,a='5'; p=&a;                     //显然是正确的, p="abcd";              ...
  • bitlxlx
  • bitlxlx
  • 2016年07月28日 13:19
  • 3000

C语言:将输入的字符串(char* cp)存入字符指针数组(char * spa[])

在C++下面读入string类型,存入vector中非常的简单。在C语言下面读入string倒是很简单,但是要存入指针数组中貌似费了很大的劲都不行。C还是四年之前看过,对于C下面的字符串一直很恐惧,今...
  • gws1229
  • gws1229
  • 2015年07月22日 14:17
  • 1427

C语言中,为什么字符串可以赋值给字符指针变量

本文是通过几篇转帖的文章整理而成的,内容稍有修改: 一、 C语言中,为什么字符串可以赋值给字符指针变量 char *p,a='5'; p=&a;                  ...
  • ss19890125
  • ss19890125
  • 2015年09月23日 22:08
  • 6498

C语言系列(四)指针概念的理解

转载请标明出处: http://blog.csdn.net/u011974987/article/details/52270018; 本文出自:【XuHao的博客】 前言最近真的是忙的不可开交...
  • u011974987
  • u011974987
  • 2016年08月22日 14:26
  • 3954

C语言用指针实现将字符串里的单词顺序倒置

将字符串里词顺序倒置,如"Times New Roman"变为"Roman New Times"。以空格为分隔符。 还比如把"Welcome to India" 变成"India to Welcom...
  • zheng0518
  • zheng0518
  • 2013年05月13日 15:13
  • 1471

c语言中输出字符指针相关问题

一、例如定义一个 char * p = "hello";的字符指针。 首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针(为什么不叫字符串指针,我个人觉得,字符指针针...
  • littesss
  • littesss
  • 2017年05月01日 01:41
  • 3050

C语言通过指针和数组实现字符串倒序

1.数组方式实现  (不用字符串函数)程序如下 1 void ReverseByArray(char * s) 2 { 3 int len = 0; 4 while...
  • jianglibo1024
  • jianglibo1024
  • 2017年01月26日 16:23
  • 801
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C中对字符串和指针的理解
举报原因:
原因补充:

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