proxy代理   soft软件   IT 业界特快   norton 诺顿病毒库   代理列表   search FTP搜索   whois IP地理位置   blog 追求完美  
money理财   life生活   RSS聚合门户   firefox WEB浏览器   免费域名   typeset 假古文   AntiVirus 反病毒   ipcn 站点导航  

« FreeBSD 6.0-RELEASE 正式发布 | Main | soff 发布 腾讯 QQ/TM 珊瑚虫增强包 v4.0 最终测试版 »

November 6, 2005

关于 C++ C php 等语言的参数传递问题: 值传递 引用传递 指针传递等

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/archives/2005/11/06/000817.html http://windtear.net/archives/2005/11/06/000817.html

关于 C++ C php 等语言的参数传递问题: 值传递 引用传递 指针传递等
这篇blog源于昨天水木社区十大中的一篇征友文章

一id为lonelyangel的网友写了一篇《以程序员的方式征女友!!!!!!》 源程序附后
然后就有不少人对"程序"进行了"批判" (有批参数传递 有批 find =-1的)
这里传递的是值  也就是参数传递概念中的 值传递
根据处理过程: 复制了一份数据进行处理
所以这里应该用引用传递: 即直接操作参数本身
要不然征来征去都是虚幻:P

顺便就想到了参数传递问题
C 语言有值传递(pass by value)和指针传递(pass by pointer)两种
C++ 多了引用传递(pass by reference)
php asp 等其他语言也都有这些函数的参数和返回值的传递方式问题

很简单的说:
引用传递就是直接操作参数本身
值传递是复制一份参数然后处理 参数本身之前是啥样 调用参数后还是啥样
指针传递也会改变指针所指的内容

记得林锐在《高质量C++编程指南》中还特意写过这些
(btw 林锐就是写我的大学十年那个林锐
 2005-03-13 16:40 个人空间 看林锐《我的大学十年》
)
所以可以看出 征友的网友程序语言功底也不算扎实  或者仅仅是搞笑而已
这里 HUMAN you 应该用引用传递 即前面加 &
如果是php的话 you 应该是 $you 变量 然后引用传递是 &$you
asp/VBScript 等其他语言也都有这些我那天
C# 默认按值传递参数,Visual Basic 默认按引用传递参数


----->  附
#include "human.h"

CLASS HUMAN;

BOOL WantGirl(HUMAN you)
{
     HUMAN me;
     
     me.City = BEIJING;
     me.Gender = BOY
     me.Age =25;                                               // 年龄
     me.Height = 173;                                          // 身高
     me.Weight = 61;                                           //体重
     me.Degree = BACHELOR;                                     // 学历
     me.Character = "性格开朗,内外向兼有,孝敬父母,为人诚恳,
                     幽默风趣,人品好,有上进心,对感情专一";  // 性格
     me.Enjoying = "足球、音乐、健身、无不良嗜好";             // 爱好
     me.QQ = 103069130;                                        // 联系方式

     if(you.City != me.City)
         return FALSE;    

     if((you.Gender != GIRL)
     {
         you.FollowPost();
         me.ThankU();
         return FALSE;
     }

     if((you.Height < 160)||(you.Weight > me.Weight)||(you.Degree < BACHELOR))
     {
         me.BlessYou();  
         return FALSE;
     }
    
     if(you.Character.Find("开朗"||"人品好"||"对感情专一"||
                          "孝敬父母"||"温柔贤惠") == -1)
         return FALSE;

     you.Consider(me);
    
     if(you.FirstSatisfy(me))
     {
         you.Contact(me);
         me.FeedBack();
         me.Consider(you);
         you.Consider(me);
         if(you.Satify(me) && me.Satify(you))
             return TRUE;
         else
             return FALSE;
     }
    
     return FALSE;
}
本blog WWW

Posted by windtear at November 6, 2005 1:28 PM

本站使用中的任何问题,请与 windtear @ windtear.net 联系
Copyright© 1999-2024 Windtear. All rights reserved.