前面我們介紹了函式返回值是內建值型別、自定義值型別和引用型別的處理方法。本文將介紹函式的返回值是const指標型別時的處理方法。
指向常量的指標(pointer to const)不能用於改變其所指向物件的值。想要存放常量物件的位址,只能使用指向常量的指標。
const double pi = 3.14;
double *ptr = π//錯誤,ptr是非const指標
const double *cptr = pi//正確
常量指標(const pointer)的本身是常量,必須初始化,而且一旦初始化,則它本身的值就不會改變。
int errnumb = 0;
int* const curerr = &errnumb;//curerr是常量指標,且一直指向errnumb
指向常量的常量指標指向乙個常量物件,且該指標本身也是常量。
const double* const pip = pi;
此時,pip
指向double
常量pi
,且不能修改
pip的值,即
pip始終指向pi。
定義如下函式
const char* get_string()
函式get_string()
返回從字串字面值中建立的
const char*
。在編譯器建立了該字串並且將其儲存在靜態儲存區之後,該返回值返回的是該字串字面值在靜態儲存區中的位址。所以
get_string()
函式的返回值是右值,且不能為非
const
指標賦值。
get_string()[0] = 'a';//錯誤,表示式必須是可修改的左值
char* pstring = get_string();//錯誤,「const char*」型別不能用於初始化「char*」型別的實體
const char* cpstring = get_string();//正確
另外還需要注意的是,函式不能返回指向區域性棧變數的指標,因為棧變數在函式返回後就銷毀了,其返回的位址為無效位址。
將「4返回值是指向常量的指標的函式」中提到的
get_string()
函式的返回值修改為指向常量的常量指標
const char* const get_string()
因為該返回值是指向常量的,所以像在「
4返回值是指向常量的指標的函式」中提到的一樣,該值為右值,不能對其進行賦值,也不能將其賦值給非
const
指標。const char* const ccpstring = get_string();//正確
const char* cpstring = get_string();//正確
從上面**可知,指向常量的常量指標可以賦值給指向常量的非常量指標。
C 函式返回值。
一 params.可變引數,無論有幾個引數,必須出現在引數列表的最後,可以為可變引數直接傳遞乙個對應型別的陣列。class program test msg intarry static void test string msg,params int args 二 ref 引用傳遞 三 out ou...
主函式的返回值返回給誰 主函式返回值
responsebody報406 原因是 要返回的物件沒有setget方法sdfsdf 自定義視 析器和缺省視 析器需同時使用才好用 如果以redireci或forward字首,那麼 走缺省視 析器 return redirect index.jsp return forward index 需寫全...
函式返回值
這裡接著探求被調函式的返回值是如何傳遞到主調函式中的,下面為c程式。add函式通過直接返回a b的,而add1函式先定義乙個區域性變數c,儲存a b的值,然後再返回c的值。其中a b可以當成乙個臨時變數,其結果是暫時存放在暫存器中的 eax 參照反匯程式設計序,可以看出函式的值並不是通過壓棧 基址定...