CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

指针运算的问题

楼主NSR250()2006-05-02 11:35:20 在 C/C++ / C++ 语言 提问

char   a[10]="wisdom",*p;  
  p=&a[0];  
  *p++=*(p+2);  
  printf("*p=%c\n",*p);  
  system("pause");  
   
  请问第三行是什麽意思?  
  是先   *p=*(p+2)   ,然后再   *p++   吗?  
  为什麽印出来的结果是   *p=i   呢? 问题点数:20、回复次数:13Top

1 楼ENOUGH_XU(苦点,累点->没关系)回复于 2006-05-02 12:03:20 得分 0

其实就是把字符移位,把第二个移到第一个的位子上,依次做下去  
  先做*p=*(p+2),在把p的地址往后移一个Top

2 楼ENOUGH_XU(苦点,累点->没关系)回复于 2006-05-02 12:04:28 得分 0

是第3个移到第一个的位子上(个数不同于数组的序号)Top

3 楼NSR250()回复于 2006-05-02 12:09:19 得分 0

我明白了,  
  谢谢ENOUGH_XU大大的说明。Top

4 楼ENOUGH_XU(苦点,累点->没关系)回复于 2006-05-02 12:10:32 得分 0

你的程序只做了一次,你用s(p先指向w,再把第三个付给第一个)覆盖了w,然后再把指针从指向第一个的w变成了指向第二个,即i,所以输出的是i啊Top

5 楼NSR250()回复于 2006-05-02 12:14:30 得分 0

之前一直想不通,  
  难怪我把*(p+2)改成*(p+3)、*(p+4)...,  
  得到结果的一样是i,    
  经过大大您的说明,  
  我终于顿语了,  
  实在感谢。Top

6 楼ENOUGH_XU(苦点,累点->没关系)回复于 2006-05-02 12:15:35 得分 0

客气,我也是新手,大家相互学习.Top

7 楼heskyII(赫斯基)回复于 2006-05-02 12:20:31 得分 0

白痴,错了吧。  
  *p++=*(p+2);的意思是将P所指向的内容=(P+2)的值,即‘S’,然后再将指针P后移一位Top

8 楼awl005(忽然)回复于 2006-05-02 13:37:11 得分 0

*p++=*(p+2);  
  等价于:  
   
  *p=*(p+2);  
  p++;Top

9 楼Mypiger(深圳 step by step)回复于 2006-05-02 14:15:18 得分 0

错了!  
  p=&a[0];                             //p指向a的头指针  
  *p++=*(p+2);                     //把p第三个位置的值赋值给p指向的位置,答案是   :sisdom  
  printf("*p=%c\n",*p);   //输出%c   由于*p++(p++)所以输出第二个字符   iTop

10 楼baichi2()回复于 2006-05-02 14:20:40 得分 0

*p++=*(p+2);  
  分开来写是  
  *p=*(p+2);  
  p++;  
  这一步是把a[2]的值赋给a[0],而a[1]值并没有改变  
  printf("*p=%c\n",*p);  
  因为前面p++了,所以输出的是a[1]的值,a[1]一直是=i,没有改变  
  printf("%s",a);  
  看看就知道了Top

11 楼Mypiger(深圳 step by step)回复于 2006-05-02 14:29:01 得分 0

楼上的答案也是!  
  :)Top

12 楼shuaifujian()回复于 2006-05-02 14:40:09 得分 0

#include<iostream.h>  
  void   main()  
  {  
          char   a[10]="wisdom",*p;  
          p=a;  
  while(*p++)  
          {  
  cout<<"*p="<<*p<<endl;  
          *p=*(p+2);  
          }  
  cout<<"*p="<<*p<<endl;  
  }  
  Top

13 楼wanfustudio(雁南飞:知识之败,慕虚名而不务潜修也)回复于 2006-05-02 16:08:36 得分 0

基础知识~~~~~~~~~~~~~~~~~~~~~~~~~~  
   
  强烈建议楼主再好好看看运算符优先级Top

相关问题

关键词

得分解答快速导航

  • 帖主:NSR250

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo