[分享] 使用傳值、傳址、傳參考值呼叫

"C 程式語言"和"物件導向程式設計"課程討論區-授課教授:蔡明志老師

版主: 蔡明志

分享到: Facebook

[分享] 使用傳值、傳址、傳參考值呼叫

文章toni » 週二 11月 07, 2006 6:37 pm

代碼: 選擇全部
//這是今天OOP上課小考的程式
//題目為 : 使用傳值、傳址、傳參考值呼叫
//         a值指定為100 , b值指定為200
//         在做下一個呼叫前要先把a的值和b的值重新設定為100和200

#include <iostream>
#include <stdlib.h>

using namespace std;

class Swap
{
    private:
             int a;
             int b;
         
    public:
             Swap();
             
             void call_by_value     ( int   , int   );
             void call_by_address   ( int * , int * );
             void call_by_refernece ( int & , int & );
             
             void reset();
             void show ();                                   
};   

Swap::Swap()
{
    a = 100;
    b = 200;
}

void Swap::call_by_value( int x , int y )
{
    int temp;
    temp = x;
    x = y;
    y = temp;
}

void Swap::call_by_address( int *p , int *q )
{
    int temp;
    temp = *p;
    *p = *q;
    *q = temp;
}

void Swap::call_by_refernece( int &i , int &j )
{
    int temp;
    temp = i;
    i = j;
    j = temp;
}   

void Swap::reset()
{
    a = 100;
    b = 200;
    cout << "***************************************" << endl;
    cout << "已經重新設定 a的值為100 和 b的值為200 !" << endl;
    cout << "***************************************" << endl;
    system( "pause" );
    cout << endl ;
}

void Swap::show()
{
    cout << "=======================================================" << endl;
    cout << "在使用 傳值呼叫 來做兩數交換前,a = " << a << ",b = " << b << endl;
     
    call_by_value( a , b );
   
    cout << "在使用 傳值呼叫 來做兩數交換後,a = " << a << ",b = " << b << endl;
    cout << "=======================================================" << endl;
   
    system ( "pause" );
    cout << endl;
     
    reset();
   
    cout << "=======================================================" << endl;
    cout << "在使用 傳址呼叫 來做兩數交換前,a = " << a << ",b = " << b << endl;
     
    call_by_address( &a , &b ) ;
   
    cout << "在使用 傳址呼叫 來做兩數交換後,a = " << a << ",b = " << b << endl;
    cout << "=======================================================" << endl;
   
    system ( "pause" );
    cout << endl;
   
    reset();
   
    cout << "=======================================================" << endl;
    cout << "在使用 傳參考值呼叫 來做兩數交換前,a = " << a << ",b = " << b << endl ;
     
    call_by_refernece( a , b );
   
    cout << "在使用 傳參考值呼叫 來做兩數交換後,a = " << a << ",b = " << b << endl ;
    cout << "=======================================================" << endl;
   
    system ( "pause" );
}
                           
int main()
{
    Swap go;
    go.show();   
    return 0;
}
附加檔案
Swap.exe
(416.38 KiB) 被下載 294 次
Swap.cpp
(2.71 KiB) 被下載 239 次
toni
問題很多的小學生
 
文章: 20
註冊時間: 週三 3月 09, 2005 4:53 pm
來自: 桃園

Re:[分享] 使用傳值、傳址、傳參考值呼叫

文章494742197 » 週二 11月 07, 2006 8:45 pm

請問期中考的範圍事老師今天白板上寫的那些嗎?
class template 會考嗎?
還是還有哪些呢?
494742197
剛學走路的小朋友
 
文章: 6
註冊時間: 週四 1月 12, 2006 12:02 am

Re:[分享] 使用傳值、傳址、傳參考值呼叫

文章蔡明志 » 週二 11月 07, 2006 10:06 pm

494742197 寫:請問期中考的範圍事老師今天白板上寫的那些嗎?
class template 會考嗎?
還是還有哪些呢?

:roll: 考試範圍是教過的都有可能會考。
不限今天白板上寫的。
蔡明志
資管系教師
 
文章: 730
註冊時間: 週一 4月 11, 2005 6:31 pm

Re:[分享] 使用傳值、傳址、傳參考值呼叫

文章tsaichiachin » 週三 11月 08, 2006 3:54 am

494742197 寫:請問期中考的範圍事老師今天白板上寫的那些嗎?
class template 會考嗎?
還是還有哪些呢?

說不定...因為你問了反而就考出來了 :lol:
要小心特異化的樣板喔 :razz:
漸入佳境:http://www.wretch.cc/blog/tsaichiachin
~ 夢想的可貴 在於 追求的過程~
+~ 生命的價值 在於 追求夢想~+
頭像
tsaichiachin
充滿活力的大學生
 
文章: 363
註冊時間: 週二 10月 04, 2005 8:15 pm
來自: 射手座


回到 C/OOP 課程討論區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客