C 函式的返回值(下)

2021-08-11 02:17:01 字數 1518 閱讀 4201

前面我們介紹了函式返回值是內建值型別、自定義值型別和引用型別的處理方法。本文將介紹函式的返回值是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 參照反匯程式設計序,可以看出函式的值並不是通過壓棧 基址定...