計算機概論:C/C++程式設計

 

6 模組化的程式設計基礎:函式

 

 


授課教師:陳慶瀚

WWW : http://www.miat.ee.isu.edu.tw/cpp

E-mail : pierre@isu.edu.tw   

 


6.6指標與函式的關係

 傳遞字串

/*----------------------------------------------------*/

//                  範例程式6-12

//           傳入一個字串指標,傳出字串長度

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

int getSize(char *ptr);

void main()

{

int nLen;

char *str = "elephant";      //  字串指標  

nLen = getSize(str);             // 傳回長度

cout<<"elephant"<<nLen<<"個字元\n"; 

}

int getSize (char *ptr)

{

int i = 0;

while(ptr[I] != ‘\0’)

{

i++;

}

return i;

}

傳遞陣列

我們可以將一個陣列傳入函式內,由於傳遞方法是將陣列的位址傳入,所以效率很高。同時該陣列在函式內所使用的記憶體與函式外是相同的,因此一旦在函式內修改了陣列內容,離開函式之後仍將維持修改過的內容。

/*----------------------------------------------------*/

//                  範例程式6-13

//             傳入一個陣列,修改後傳出

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

void change(char []);

void main()

{

char sData[10] = "C++程式";

    cout<<"函式呼叫前的名字 : "<<sData<<endl;   // 輸出原來名字

change(sData);

cout<<"函式呼叫前的名字 : "<<sData<<endl;   // 輸出修改後的名字

}

void change(char sData[20])

{

cout<<"請輸入新的字串:");

cin>>sData;

}

傳遞函數的位址

每個變數都有配置特定的記憶體位置,每個陣列也都有配置特定的記憶體位置,那麼函式是不是配置有記憶體位址?答案是肯定的。每個函式都有它的記憶體位置,我們可以使用函式的記憶體位置將一個函式傳入另一個函式中。但是要怎麼做?

首先,我們宣告一個函式的指標變數,用來存放函式的記憶體位址, 例如

int (*ptr)(int,int);

接著就可以把這個指標變數指向所有相同宣告原型的函式(具有兩個int資料型別的傳遞參數和int傳回型別)

/*----------------------------------------------------*/

//                  範例程式6-14

//              使用函式的記憶體位置

//                  陳慶瀚,2001

/*----------------------------------------------------*/

#include <iostream.h>

int add(int,int);

int sub(int,int);

void main()

{

int (*ptr)(int,int); // 宣告一個指向函式的指標

int a,b,c;

cout<<”輸入任意整數ab”;

cin>>a>>b;

ptr = add; // ptr指向函式add

c=(*ptr)(a,b); // 使用ptr所指向的函式,ptr指向add,所以c=add(a,b);

cout<<"a+b = "<<c<<endl;

ptr = sub; // ptr指向函式sub

c=(*ptr)(a,b); // 使用ptr所指向的函式,ptr指向sub,所以c=sub(a,b);

// ptr指向sub,所以c=sub(a,b);

cout<<"a-b = "<<c<<endl;

}

int add(int a,int b)

{

return (a+b);

}

int sub(int a,int b)

{

return (a-b);

} 


 

計算機概論:C/C++程式設計

義守大學電機系 陳慶瀚 
2001.12.17

 

謝孟媛 dvd -
情趣用品 -
飛鳥遊戲 -
遊戲基地 -
PATEK PHILIPPE -
xyz資訊工作坊 -
xyz軟體王 -
英文老師 -
沛納海 -
xyz軟體下載倉庫 -
基測試題 -
CARTIER 卡地亞 -
林晟數學 -
PIAGET -
費洛蒙情定 -
xyz -
軟體大補帖 -
高國華補習班 -
game淘 -
ps2台片 -
wii超級瑪莉攻略 -
情定費洛蒙 -
wii價格2011 -
xbox 360台片 -
tvgame360 -
愛馬仕 -
春藥專賣店 -
ps3價錢 2011 -
ps2遊戲王 -
wii遊戲片專賣店 -
百達翡麗 PATEK PHILIPPE -
壯陽藥品哪買 -
海賊王 -
春藥王 -
xyz軟體下載倉庫 -
壯陽食物 -
xbox360 -
催情藥 -
TISSOT 天梭 -
ps2遊戲燒錄 -
威而剛哪裡買 -
一夜情婦 -
xbox 360台片專賣 -
國中基測題庫 -
無雙遊戲網 -
xyz軟體王 -
ps2遊戲片80元 -
基測 -
xyz軟體王下載 -
GUCCI 古馳 -
南一題庫網 -
COACH -
LOUIS VUITTON -
wii超級瑪莉 -
wii價格2011 -
魔法老師 -
催情藥專賣店 -
國小翰林題庫網 -
wii遊戲片專賣店 -
遊戲天堂 -
寶格麗 -
金榜之路 -
wii遊戲片80元 -
xbox 360遊戲片 -
wii遊戲載點 -
人類費洛蒙情定 -
xbox 360台片專賣 -
催情王 -
xyz軟體之家 -
ps2遊戲片80元 -
情色小站 -
微風廣場 -
情慾之夜 -
民視文化 -
xbox360 -
蔻馳 -
ps2遊戲燒錄 -
ps3遊戲片 -
龍騰高中題庫 -
ps3台片 -
威而剛 -
ps3價錢 2011 -
軟體王下載 -
蕭邦 CHOPARD -
龍騰 -
催情藥 -
威而剛哪裡買 -
基測題目 -
HERMES 愛馬仕 -
情定費洛蒙 -
ps2台片 -
ps3遊戲片 -
wii瑪莉兄弟遊戲 -
江詩丹頓 Vacheron Constantin -
wii超級瑪莉 -
wii遊戲片在ho99小舖 -
春藥王 -
歷屆基測試題 -
窮人軟體 -
威而柔哪裡買 -
蕭邦 -
翰林題庫網 -
一夜情婦 -
wii遊戲下載 -
xbox 360遊戲 -
壯陽食物 -
ps2遊戲片 -
sogo百貨 -
台灣情色網 -
xyz軟體王下載 -
lv2011官方網 -
wii遊戲片專賣店 -
xbox 360價錢 -
歐米茄 -
雷達錶 RADO -
xyz資訊工坊 -
儒林補習班 -
壯陽藥品 -
xyz軟體王 -
窮人遊戲 -
ps2遊戲下載 -
ps3台片 -
德周 -
sogo百貨 -
費洛蒙情定 -
壯陽藥品哪買 -
催情王 -
春藥哪裡買 -
lv2011夏季新款 -
情趣用品 -
中友百貨 -
史萊姆的第一個家 -
情色論壇 -
萬寶龍 MONT BLANC -
萬國 -
ps2遊戲下載 -
春藥哪裡買 -
xyz資訊工作坊 -
龍騰文化 -
太平洋百貨 -
軟體王 -
xbox 360台片專賣 -
ps3遊戲片在ho99小舖 -
壯陽藥 -
xyz軟體銀行 -
xbox360台片 -
魔法24 -
wii遊戲片80元 -
XYZ資訊工坊 -
CARTIER -
春藥網 -
壯陽 -
xyz 軟體補給站 -
微風廣場 -
lv2011新款型錄 -
xbox 360遊戲 -
費洛蒙 -
卡地亞 -
wii遊戲下載 -
窮人天碟 -
春藥專賣店 -
gucci2011專賣店旗艦店 -
迪奧 -
CHANEL -
xyz軟體大本營 -
xbox 360遊戲片在ho99小舖 -
台北郵購網 -
BURBERRY 巴寶莉 -
伯爵 -
遠東百貨 -
陳希 -
費洛蒙mx -
時間廣場 -
漢神百貨 -
情色論壇 -
傳政 -
軟體 -
寶格麗 BVLGARI -
名牌包俱樂部 -
時間廣場 -
威而柔 -
wii瑪莉兄弟遊戲 -
lv名牌包專賣店 -
xyz軟體大本營 -
威而柔哪裡買 -
伯爵 PIAGET -
xyz軟體銀行 -
ps3遊戲下載 -
wii超級瑪莉歐 -
無名套裝 -
xyz軟體下載倉庫 -
江詩丹頓 -
林晟 -
ps3遊戲片在ho99小舖 -
威而剛 -
費洛蒙mx -
xyz軟體之家 -
HERMES -
林晟超理解數學 -
謝孟媛 -