| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1284 人关注过本帖
标题:一个有关函数的简单问题。
只看楼主 加入收藏
wNumberOney
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-7-12
收藏
得分:0 
[bo][un]mythhaha[/un] 在 2008-9-2 23:13 的发言:[/bo]

第一个是值传递,只是把a的值COPY一份传进去,不改变实参a的值,第2个函数是指针传递,传递的是数组的指针,所以能改变数组的值。个人看法 ,我也是新手,不对的地方请高手指点,谢谢

鄙人认为他的观点是正确的。
2008-09-03 09:51
qingxin111
Rank: 2
等 级:论坛游民
帖 子:71
专家分:29
注 册:2008-4-10
收藏
得分:0 
那怎么判断传递的是值还是指针呢???请大虾们举个小例子吧。谢谢!
2008-09-03 11:53
wNumberOney
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-7-12
收藏
得分:0 
回复 12# qingxin111 的帖子
#include <stdio.h>

void ValueReference(int i);//值引用函数
void PointerReference(int* p);//指针引用函数
void main()
{
    int i=3;
    int *p;

    p=&i;
    
    printf("i的地址=%p,p的地址=%p\n",&i,p);
    printf("调用ValueReference函数以后:\n");
    ValueReference(i);
    printf("i的值=%d\n",i);
    printf("调用PointerReference函数以后:\n");
    PointerReference(p);
    printf("i的值=%d\n",i);
}

void ValueReference(int i)
{
    i+=3;
    printf("值传递以后i的地址=%p,",&i,i);
}

void PointerReference(int* p)
{
    *p+=3;
    printf("指针传递以后p的地址=%p,",p);
}
/*
你会发现ValueReference函数中被传过来的参数i的地址已经与主函数中的i的地址不相同,
也就是说ValueReference函数操作的i只是主函数中i的一个副本,该函数只改变了i的副本的值,并没有改变实际i的值;
而PointerReference函数的参数是i的地址,函数修改了p所指向的值,也就修改了i地址所指向的值。
LS,明白否?解释若有不妥之处,请大家指正。
*/
2008-09-03 13:37
qingxin111
Rank: 2
等 级:论坛游民
帖 子:71
专家分:29
注 册:2008-4-10
收藏
得分:0 
明白了,非常感谢各位帮忙的热心人!
2008-09-03 18:38
jianyitianxia
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-8-28
收藏
得分:0 
一个属于单向传递,一个属于指针;
2008-09-03 18:48
li012584
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-18
收藏
得分:0 
第一个是值传递,为单向传递;第二个是地址传递,可以双向传递。原因就是这样简单1·····
2008-09-03 21:14
快速回复:一个有关函数的简单问题。
数据加载中...
 
   



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

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