字元指標函式的返回值問題
今天學弟問了這麼一道問題,為什麼指標型別的函式返回值不是指標而是一串字元,一開始我也很好奇為什麼?後來看了一下原題,發現這個函式是乙個字元指標函式,返回值是乙個字串,這就說得通了。
字元指標的返回值是指標(位址),但是字串的名字就是位址,然後又因為cout的過載,遇到這種情況,會自動輸出字串。簡單點來說就是,cout這個類他過載了char這個運算子,當遇到char時,cout物件自動視為你要輸出是乙個字串,而不是乙個指標的值。
在網上也看到了乙個有意思的解釋:「
你媽媽每天給你10塊錢讓你放學回家買一斤饅頭,這已經成了習慣,就像你每次輸出乙個字串時都把字串的名字拿來輸出一樣(字串的名字就是字串的首位址).所以這個習慣就成了每當你收到10塊錢你就以為你媽媽讓你買饅頭了,結果有一天你媽媽想讓你買油條,你根本完全不知道,買的還是饅頭.如果你媽媽想讓你買油條,或是說你想讓他輸出的是指標,那麼你就要告訴cout你要輸出的是乙個指標,不是饅頭(呃不對,應該是不是油條,啊還是不對,應該是不是字串.)啊呸,饅頭油條....所以你這樣cout<
給學弟亂講了一通,哈哈哈,我的理解不知道是否正確,就沒有肯定的引導他以免誤人子弟。
指標作為函式返回值
c語言允許函式的返回值是乙個指標 位址 我們將這樣的函式稱為指標函式。下面的例子定義了乙個函式 strlong 用來返回兩個字串中較長的乙個 include include char strlong char str1,char str2 else int main 執行結果 c language ...
關於函式返回值是指標的問題
先看乙個例子,初學者經常碰到的問題 函式getstring中定義的變數p屬於local,當函式結束時自動消失,所以在返回時,根本就得不到p所指的內容。解決辦法有以上常見的幾種 1 可以使用全域性陣列,使用全域性變數時,在程式結束時才釋放。2 在函式getstring 中使用new在堆上動態分配記憶體...
關於函式返回值是指標的問題
2010 11 07 23 43 608人閱讀收藏 舉報string delete 儲存編譯器 null語言 先看乙個例子,初學者經常碰到的問題 cpp view plain copy char getstring void void main void 函式getstring中定義的變數p屬於lo...