| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 474 人关注过本帖
标题:菜鸟指针问题
只看楼主 加入收藏
qingxin4785
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-18
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:6 
菜鸟指针问题
void p(x,y)
int *x,y;
{
int z;
z=*x+y;
*x=*x+3;
y=y+z;
printf("%d %d %d\n"*x,y,z);
}

main()
{
int x=1,y=2,z=3;
p(&x,y);
printf("%d %d %d\n",x,y,z);
p(&z,x);
printf("%d %d %d\n",x,y,z);
}
形参第一次输出453 423,第二次输出为什么是786 723?
我刚接触编程指针不懂,请将对详细点,指针是怎么运行的?请大侠帮帮忙。
搜索更多相关主题的帖子: 指针 
2009-11-18 22:35
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:1 
首先你这个程序好像有错。。
#include<stdio.h>
void p(int *x,int y)
{
 int z;
z=*x+y;
*x=*x+3;
y=y+z;
printf("%d %d %d\n",*x,y,z);
}

main()
{
int x=1,y=2,z=3;
p(&x,y);
printf("%d %d %d\n",x,y,z);
p(&z,x);
printf("%d %d %d\n",x,y,z);
}
2009-11-18 23:09
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:1 
*x=*x+3
x被改变了。
呵呵。

要练习算法就来http:///!!有挑战哦!!
2009-11-18 23:09
陈大师
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:231
专家分:1038
注 册:2009-11-4
收藏
得分:0 
具体说···x 和z 的值都被改变了
z=*x+y;
*x=*x+3
2009-11-18 23:12
xy4919961
Rank: 5Rank: 5
等 级:职业侠客
帖 子:199
专家分:362
注 册:2009-10-24
收藏
得分:0 
首先第一次.函数提里面的结果是 x=4 y=5 z=3;因为x传的是地址.所以..只有x改变了直其他的直不变.int x=4,y=2,z=3;
第2次   因为前面x已经变成了4所以这次把z的地址在传,6 11 7,                                    x=4,y=2,z=6;
y没传送地址.所以不能改变植,只有x z 2个传送了地址才可以改变值,.不明白还可以提问
void p(int *x,int y)
{
int z;
z=*x+y;
*x=*x+3;
y=y+z;
printf("%d %d %d\n",*x,y,z);
}

main()
{
int x=1,y=2,z=3;
p(&x,y);
printf("%d %d %d\n",x,y,z);
p(&z,x);
printf("%d %d %d\n",x,y,z);
  getch();
   return 0;

}


[ 本帖最后由 xy4919961 于 2009-11-18 23:25 编辑 ]

QQ群:96348241
2009-11-18 23:23
qingxin4785
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-18
收藏
得分:0 
谢谢大家!
2009-11-19 02:26
qingxin4785
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-11-18
收藏
得分:0 
不好意思分太少了。
2009-11-19 02:34
快速回复:菜鸟指针问题
数据加载中...
 
   



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

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