| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 576 人关注过本帖
标题:指針小問題﹐望老鳥解惑﹐迫切希望能詳細解釋﹗﹗﹗
只看楼主 加入收藏
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
指針小問題﹐望老鳥解惑﹐迫切希望能詳細解釋﹗﹗﹗
程序代码:
main(){
  int *p,i,a[10];
  p=a;
for(i=0;i<10;i++)
*p++=i;
  p=a; /*為什么又要重新指向數組a*/
  for(i=0;i<10;i++)
    printf("a[%d]=%d\n",i,*p++);
    getch();
}
為什么又要重新指向數組a呢﹐望詳細解釋﹐謝謝﹗﹗
搜索更多相关主题的帖子: 希望 
2011-10-11 04:11
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
脑残呗...

我就是真命天子,顺我者生,逆我者死!
2011-10-11 06:29
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:0 
for(i=0;i<10;i++)
*p++=i;
这里修改了p的指向,所以重新复位。


[ 本帖最后由 pauljames 于 2011-10-11 06:51 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-10-11 06:49
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:10 
回复 楼主 a476644693
for (i= 0 ;i< 10 ;i++)
*p++=i;
  p=a; /* 為什么又要重新指向數組a */
你看看指针是怎么运行就知道了,你把数组的地址赋值给了指针,也就是数组头个元素的地址,指针就指向头个元素地址,你用for循环对数组进行赋赋值,没循环一次,你的指针都会自动向前移动一次位置(因为p++),以便下次循环对下一个元素进行赋值,当跳出for循环时,指针p是指向第十一个元素了(你的数组只有十个元素)你要使用指针,就要重新对它重新进行赋值,把数组的头元素地址重新赋值给指针,也就是数组名所代表的地址,不然后你不重新赋值,指针会从第十一个元素地址开始的,这样会发生学界,造成系统崩溃!

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-10-11 06:49
a476644693
Rank: 2
等 级:论坛游民
帖 子:31
专家分:29
注 册:2011-8-2
收藏
得分:0 
回复 4楼 A13433758072
哦,懂了!谢谢你!原来关键在于p++啊!
2011-10-11 15:14
快速回复:指針小問題﹐望老鳥解惑﹐迫切希望能詳細解釋﹗﹗﹗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014787 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved