freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

c-6函數(shù)(已修改)

2025-08-21 15:37 本頁面
 

【正文】 第 6章 函 數(shù)? 函數(shù)可以被看作是一個由用戶定義的操作? 函數(shù)調用會導致兩件事情發(fā)生:如果函數(shù)已經被聲明為 inline ,則函數(shù)體 可能 已經在編譯期間它的調用點上就被展開;如果沒有被聲明為 inline ,則函數(shù)在運行時才被調用。函數(shù)調用會使程序控制權被傳送給正在被調用的函數(shù),而當前活動函數(shù)的執(zhí)行被掛起? 必須在調用函數(shù)之前就聲明該函數(shù)。函數(shù)聲明由函數(shù)返回類型,函數(shù)名和參數(shù)表構成,這三個元素被稱為 函數(shù)原型? 一個函數(shù)可在一個文件中被聲明多次? 函數(shù)聲明 (以及 inline 函數(shù)的定義 )最好放在頭文件中 , 這些頭文件可以被包含在每個調用該函數(shù)的文件中? 函數(shù)聲明描述了函數(shù)的接口,即描述了函數(shù)必須接收的信息類型(參數(shù)表),以及它返回的信息類型(返回類型)? 作為函數(shù)的一個用戶,我們只對它的接口進行編程:只要函數(shù)的接口不變 , 無論函數(shù)修改多么頻繁也無需改變我們的代碼? 把函數(shù)接口傳遞給用戶的機制就是把函數(shù)的聲明放在頭文件中 參數(shù)傳遞? C++中參數(shù)傳遞的缺省初始化方法是把實參的值拷貝到參數(shù)的存儲區(qū)中,這被稱為按值傳遞 passbyvalue? 但是按值傳遞并不是在所有的情況下都適合。不適合的情況包括:– 當大型的類對象必須作為參數(shù)傳遞時,對實際的應用程序而言,分配對象并拷貝到棧中的時間和空間開銷往往過大– 當實參的值必須被修改時,例如在函數(shù) swap()中用戶想改變實參的值,但是在按值傳遞的情況下無法做到// swap() 沒有交換兩個實參的值 !void swap( int v1, int v2 ) {int tmp = v2。v2 = v1。v1 = tmp。}int main() {int i = 10。int j = 20。cout Before swap():\ti: i \tj: j endl。swap( i, j )。cout After swap():\ti: i \tj: j endl。return 0。}? 為了獲得期望的行為,可以使用兩種方法。一種方法是參數(shù)被聲明成指針// pswap()交換 v1 和 v2 指向的值void pswap( int *v1, int *v2 ) { int tmp = *v2。 *v2 = *v1。 *v1 = tmp。}? 第二種方法是把參數(shù)聲明成引用。例如// rswap() 交換 v1 和 v2 引用的值void rswap( int amp。v1, int amp。v2 ) {int tmp = v2。v2 = v1。v1 = tmp。}引用參數(shù)? 在按值傳遞時,函數(shù)操縱的是實參的本地拷貝;當參數(shù)是引用時,函數(shù)接收的是實參的左值而不是值的拷貝? 這意味著函數(shù)知道實參在內存中的位置,因而能夠改變它的值或取它的地址? 使用引用參數(shù)的幾種情況:– 需要改變實參的值時– 向主調函數(shù)返回額外的結果– 向函數(shù)傳遞大型類對象include vector// 引用參數(shù) 39。occurs39。 可以含有第二個返回值vectorint::const_iterator look_up( const vectorint amp。vec, int value, // 值在 vector 中嗎 ? int amp。occurs ) // 多少次 ?{// res_iter 被初始化為最后一個元素的下一位置vectorint::const_iterator res_iter = ()。occurs = 0。for ( vectorint::const_iterator iter = ()。 iter != ()。 ++iter )if ( *iter == value ){if ( res_iter == () ) //第一次找到時移動迭代器res_iter = iter。++occurs。}return res_iter。}//引用參數(shù)的第三種情況是在向函數(shù)傳遞一個大型類對象時class Huge { public: double stuff[1000]。 }。extern int calc( const Huge amp。 )。int main() {Huge table[ 1000 ]。// ... 初始化 tableint sum = 0。for ( int ix=0。 ix 1000。 ++ix )// 函數(shù) calc() 將指向 Huge 類型的數(shù)組元素指定為實參sum += calc( table[ix] )。// ...}? 希望用引用參數(shù)以避免拷貝用作實參的大型類對象,同時又希望防止函數(shù)修改實參的值:把參數(shù)聲明為 const 型的引用,這種方式能夠使編譯器防止無意的改變class X。extern int foo_bar(Xamp。 )。int foo( const X amp。 xx ) { // 錯誤 : const 傳遞給非 const return foo_bar( xx )。}? 為使該程序通過編譯,改變 foo_bar()的參數(shù)的類型,以下兩種聲明都是可以接受的extern int foo_bar( const Xamp。 )。extern int foo_bar( X )。 // 按值傳遞? 可以聲明任意內置數(shù)據類型的引用參數(shù)。例如如果想修改指針本身,而不是指針引用的對象,那么可以聲明一個參數(shù),該參數(shù)是一個指針的引用void ptrswap( int *amp。v1, int *amp。v2 ) {int *tmp = v2。v2 = v1。v1 = tmp。}include iostreamvoid ptrswap( int *amp。v1, int *amp。v2 )。int main() {int i = 10。int j = 20。int *pi = amp。i。int *pj = amp。j。std::cout Before ptrswap():\tpi: *pi \tpj: *pj std::endl。ptrswap( pi, pj )。std::cout After ptrswap():\tpi: *pi \tpj: *pj std::endl。std::couti: i\tj: jstd::endl。return 0。}Before ptrswap(): pi: 10 pj: 20After ptrswap(): pi: 20 pj: 10i: 10 j: 20引用和指針參數(shù)的關系? 這兩種參數(shù)都允許函數(shù)修改實參指向的
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1