当前位置: 代码迷 >> C语言 >> *pi+=2;pi+=2;*pi+=2; 指针问题求解
  详细解决方案

*pi+=2;pi+=2;*pi+=2; 指针问题求解

热度:366   发布时间:2008-06-04 15:18:54.0
*pi+=2;pi+=2;*pi+=2; 指针问题求解
#include <stdio.h>
main()
{
    void change_p(int *pi);
    int *p;
    int a[]={1,4,7,10};
    p=&a[1];
    change_p(p);
    printf("%d\n",*p);
}

void change_p(int *pi)
{
    *pi+=2;
     pi+=2;
    *pi+=2;
}
求解?

[[it] 本帖最后由 xiaofeixia99999 于 2008-6-4 15:38 编辑 [/it]]
搜索更多相关的解决方案: 问题求解  指针  

----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
  void change_p(int *pi);
   int *p,a[]={1,4,7,10};
    p=& a[1];
      change_p(p);
       printf("%d\n",*p);
   }

void change_p(int *pi)
   {*pi+=2;
     pi+=2;
    *pi+=2;
  }
----------------解决方案--------------------------------------------------------
我这结果是6
;掉了!

[[it] 本帖最后由 wltysy 于 2008-6-4 15:40 编辑 [/it]]
----------------解决方案--------------------------------------------------------
呵呵.是呀.运行结果是6.     
但就是不理解.

请高手解释一下
----------------解决方案--------------------------------------------------------
回复 4# liyanhong 的帖子
哈!偶是小菜,只能这样!
----------------解决方案--------------------------------------------------------
同一级别的
----------------解决方案--------------------------------------------------------
[bo][un]liyanhong[/un] 在 2008-6-4 15:36 的发言:[/bo]


void change_p(int *pi)
{
    *pi+=2;  //这里*pi+2也就是说a[1]+=2;
     pi+=2 ...
//这里你把pi的地址加2了……pi已经不在是a[1]的地址了,后面就不要说了吧
----------------解决方案--------------------------------------------------------
回复 8# smltq 的帖子
这个还是不理解.

我觉得可能是*pi+=2没有算.
只有pi+=2算了.
不然不会只等于6

照你那样说.你能说说为什么后面同样是*pi+=2;
后面一个为什么没有算吗
----------------解决方案--------------------------------------------------------
void change_p(int *pi)
{
    *pi+=2;//这里a[1]=4+2
     pi+=2;//你拿指针的值来加……pi已经不在指向a[1]了,已经指向a[3]了
    *pi+=2;//你把a[3]的值加2了
}
----------------解决方案--------------------------------------------------------
你打印的是p指针所指向的内容也就是a[1]当然是6喽
----------------解决方案--------------------------------------------------------
  相关解决方案