| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1315 人关注过本帖
标题:关于形参不会改变实参的问题(谭浩强书上这个例子是否有误)
只看楼主 加入收藏
simonfire
Rank: 2
等 级:论坛游民
帖 子:12
专家分:28
注 册:2009-9-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
关于形参不会改变实参的问题(谭浩强书上这个例子是否有误)
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

如上图,,形参既然不能改变实参,而且没有返回值;那应该不能排序吧。
结论是书上没错啊,谢谢大家,楼下回复的各位!

如上图,,形参既然不能改变实参,而且没有返回值;那应该不能排序吧。
结论是书上没错啊,谢谢大家,楼下回复的各位!

[ 本帖最后由 simonfire 于 2011-11-25 12:20 编辑 ]
搜索更多相关主题的帖子: 而且 
2011-11-24 12:18
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:5 
要看形参是什么类型的,如果是指针类型,是可以改变的,不是指针就不能
2011-11-24 13:02
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:5 
传的是数据的首地址,没有问题.

★★★★★为人民服务★★★★★
2011-11-24 13:19
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:5 
回复 2楼 luchar
指针形参也不能改变啊,比如:

void swap(int *x, int *y)
{
   int    *z;
 
   z = x;
   x = y;
   y = z;
}

在main()函数中调用这个函数对a,b进行操作,a,b的值就不会发生交换的

何必等待?梦在今朝
2011-11-24 13:46
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:0 
以下是引用zy_space在2011-11-24 13:46:03的发言:

指针形参也不能改变啊,比如:

void swap(int *x, int *y)
{
   int    *z;
 
   z = x;
   x = y;
   y = z;
}

在main()函数中调用这个函数对a,b进行操作,a,b的值就不会发生交换的

这样呢
程序代码:
#include<stdio.h>
void swap(int *x, int *y)
{
   int z;
   z = *x;
   *x = *y;
   *y = z;
}

int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printf("a=%d,b=%d\n",a,b);
    swap(&a,&b);    
    printf("a=%d,b=%d\n",a,b);
}
2011-11-24 13:58
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
回复 5楼 luchar
你这样改变的是因为形参指针上面的地址发生了改变。但是形参本身的改变并不会引起实参的改变,因为函数参数的单向传递性。之所以改变是因为形参是一个指针,而指针存储的是一个地址。如果对地址进行改变那么相应地址上的值当然会发生改变。而不是形参引起了实参的改变。

何必等待?梦在今朝
2011-11-24 14:08
猫猫醉拳
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2011-11-14
收藏
得分:5 
他说的应该是参数类型也随之改变吧。。。
2011-11-24 14:09
快速回复:关于形参不会改变实参的问题(谭浩强书上这个例子是否有误)
数据加载中...
 
   



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

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