C 含有const的傳遞和返回

2021-06-21 09:11:33 字數 873 閱讀 9241



例程參考:c++程式設計思想第二卷 260頁

c++編譯器預設由乙個物件產生乙個新物件時採用位拷貝方式!!

#include #include using namespace std;

ofstream out("howmany.out");

class howmany

static void print(const string& msg="")

{ if (msg.size()!=0)

{ out《防止按值傳遞

使用者在類中定義乙個拷貝建構函式,語法:

nocc(const nocc &)

函式體內可以什麼都不做;如果再發生按值傳遞的呼叫,編譯器會自動提示錯誤;

const在函式呼叫時的用法:參考 c++程式設計思想第二卷 194

一、按值傳遞和返回

①值傳遞:表示不可改變

②值返回:不可作為左值使用

若為內建型別,const應去掉,以免混淆

二、傳遞和返回位址

1.位址傳遞:臨時變數可以傳遞給接受const引用的函式,而不可以傳遞給接受指標的函式,見195;

可以把非const型別傳遞給const型別,但是反過來不行;

總之,可以把非const型別傳給const型別,返回來卻不行

傳遞時,兩個作用:一是表示不能改變,二是可以接受臨時量

返回時,表示不能作為左值

ps:c++中的臨時量

①有返回值的函式返回時,產生乙個臨時量,語句執行完畢時,自動刪除;

②函式呼叫時,按值傳遞傳遞的引數會立即產生乙個副本

它們自動的生成為常量,改變臨時量是錯誤的;

C 函式傳遞和返回陣列

c 中您可以通過指定不帶索引的陣列名來傳遞乙個指向陣列的指標。c 傳陣列給乙個函式,陣列型別自動轉換為指標型別,因而傳的實際是位址。如果您想要在函式中傳遞乙個一維陣列作為引數,您必須以下面三種方式來宣告函式形式引數,這三種宣告方式的結果是一樣的,因為每種方式都會告訴編譯器將要接收乙個整型指標。同樣地...

c語言中函式的傳遞和const型別的修飾符

c語言中函式的傳遞和const型別的修飾符。c語言中函式的傳遞 對接受到的陣列元素進行的修改,元素值的變化也會反映到再次呼叫時傳入的陣列中。const型別的修飾符 在給函式傳遞陣列時,如果擔心傳遞給函式的陣列的元素會被修改,只要在宣告形參的時候加上被稱為const的型別修飾符就可以了。如果只是引用所...

CLR via C 陣列 陣列的傳遞和返回

陣列作為實參傳給方法時,實際傳遞的是對該陣列的引用。因此,被呼叫的方法能修改陣列中的元素。如果不想被修改,必須生成陣列的拷貝並將拷貝傳給方法。注意,array.copy方法執行的是淺拷貝。換言之,如果陣列元素是引用型別,新陣列將引用先有的物件。類似的,有的方法會返回陣列的引用。如果方法構造並初始化陣...