| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1439 人关注过本帖, 2 人收藏
标题:为什么不能传会指针改变数值
只看楼主 加入收藏
syjojg
Rank: 2
等 级:论坛游民
帖 子:73
专家分:10
注 册:2008-9-12
收藏(2)
 问题点数:0 回复次数:9 
为什么不能传会指针改变数值
在学C,按照自己的理解定了一个得用指针交换数的源码,便运行后不正常啊。很是奇怪啊

#include "stdio.h"
#include "conio.h"
int swap(int *,int *);
main()
{
    int a,b,*p1,*p2;
    p1=&a,p2=&b;
    printf("Enter two number:\n");
    scanf("%d %d",&a,&b);
    printf("(1)p1=%p a=%d p2=%p b=%d",p1,a,p2,b);
    printf("\n");
    swap(p1,p2);
    printf("(3)p1=%p a=%d p2=%p b=%d",p1,a,p2,b);
    getch();
}
int swap(int *i,int *j)
{
    int *p3;
    p3=i;
    i=j;
    j=p3;
    printf("(2)p1=%p a=%d p2=%p b=%d",i,*i,j,*j);
    printf("\n");
}



运行结果如下:
" border="0" />

[[it] 本帖最后由 syjojg 于 2008-9-24 01:05 编辑 [/it]]
搜索更多相关主题的帖子: 指针 数值 
2008-09-24 00:22
netsolo
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2008-3-6
收藏
得分:0 
你到 swap 函数做了无用功
2008-09-24 01:17
syjojg
Rank: 2
等 级:论坛游民
帖 子:73
专家分:10
注 册:2008-9-12
收藏
得分:0 
[bo][un]netsolo[/un] 在 2008-9-24 01:17 的发言:[/bo]

你到 swap 函数做了无用功


我知函数不能返回变量值。但我利用SWAP是改变的指针变量啊。
2008-09-24 01:27
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
不知道你是什么意思,是不是想对换 a 和 b 的值啊?如果是这样,帮你更改了一下,你看看是不是你所需要的效果?
程序代码:
#include "stdio.h"
#include "conio.h"
int swap(int *,int *);
main()
{
    int a,b,*p1,*p2;
    p1=&a,p2=&b;
    printf("Enter two number:\n");
    scanf("%d %d",&a,&b);
    printf("(1)p1=%p a=%d p2=%p b=%d",p1,a,p2,b);
    printf("\n");
    swap(p1,p2);
    printf("(3)p1=%p a=%d p2=%p b=%d",p1,a,p2,b);
    getch();
}
int swap(int *i,int *j)
{
    int *p3;
    *p3=*i;
    *i=*j;
    *j=*p3;
    printf("(2)p1=%p a=%d p2=%p b=%d",i,*i,j,*j);
    printf("\n");
}
2008-09-24 02:05
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
p3=i;
    i=j;
    j=p3;
您这是在换指针而不是指针中的内容啊,请比较与4楼的区别。
2008-09-24 10:58
hxlou520
Rank: 1
来 自:中國_廈門
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-8-29
收藏
得分:0 
如果想交換指針的內容就要按4#那樣才能完成交換數據...

不然,你自己那樣是錯誤的..."不能企图通过改变指针形参的值而使指针实参的值改变。"這是譚浩強語言Word版裏面10章就有說到..

只要我用心,沒有不成功.
在學習中不斷失敗,必然是提高自己的一種手段.
2008-09-24 11:41
syjojg
Rank: 2
等 级:论坛游民
帖 子:73
专家分:10
注 册:2008-9-12
收藏
得分:0 
[bo][un]hxlou520[/un] 在 2008-9-24 11:41 的发言:[/bo]

如果想交換指針的內容就要按4#那樣才能完成交換數據...

不然,你自己那樣是錯誤的..."不能企图通过改变指针形参的值而使指针实参的值改变。"這是譚浩強語言Word版裏面10章就有說到..


经典!不过我看的是计算机等级考试C的书。而不是强哥的书。呵呵。受教了。

这个代码是打算交换两个数的值,我的编程正是犯了企图改变指针形参的值从而改变实参的值。一语中的。

谢谢4楼的兄弟。
2008-09-24 13:28
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
LZ你用什么截的图?看起来好先进啊……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-09-24 13:59
syjojg
Rank: 2
等 级:论坛游民
帖 子:73
专家分:10
注 册:2008-9-12
收藏
得分:0 
回版版。截图软件在下面:

软件名称: SPX Bundle V2008-02-19 超好用的截图编辑组合
软件大小: 642KB
软件语言: 简体中文
软件类别: 国产软件 / 图像捕捉
应用平台: Win2003/ WinXP/ Win2000/ NT/ WinME
更新时间: 2008-9-16 19:27:25
开 发 商:
软件图片: http://www.
下载地址: http://www.

软件介绍:

SPX Bundle 集合了 Moodysoft 出品的 SPX Instant Screen Capture  屏幕截图工具、SPX Studio 截图辅助处理工具和 SPX Editor图像编辑工具的简体中文汉化版!   SPX Instant Screen Capture 是一小巧的屏幕抓图工具,可以抓取选定的区域或整个窗口,可以将抓取的图片发送到剪贴板或 email、图片编辑器或直接存为 BMP、GIF 等格式的文件。   SPX Studio 是 SPX Instant Screen Capture 的配套工具,主要用来编辑屏幕捕捉图...
2008-09-25 00:18
caoxh0415
Rank: 2
等 级:论坛游民
帖 子:125
专家分:23
注 册:2008-4-24
收藏
得分:0 
个人观点啊 !
    p3=i;
    i=j;
    j=p3;
这几步好像只交换了地址,没有交换所指向的数值。
2008-09-25 01:02
快速回复:为什么不能传会指针改变数值
数据加载中...
 
   



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

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