C 變數操作

2021-10-09 15:35:49 字數 1594 閱讀 3947

@(c/c++學習筆記)

頂層`const`和底層`cosnt`

關於`constexpr`

關於型別說明符`auto`

關於型別說明符`decltype(expr)`

**常量引用可以繫結非常量的變數 **

非常量引用不可以繫結到常量的變數

引用的型別必須與其繫結的物件型別一致。除非引用是常量引用,常量引用可以以變數、表示式、字面值作為初值,只要後者可以轉換成常量引用的型別即可。這裡其實是編譯器創造了乙個臨時變數來儲存轉換後的結果,然後讓常量變數指向該臨時變數。(反正常量引用你也沒法修改,指向臨時變數也無大礙。)

指標一樣

指向常量的指標可以指向非常量的變數

指向非常量的指標不能指向常量的變數

int n =0;

int*

const np =

&n;

不變的是指標的值,即那個位址,而不是該位址中儲存的資料。

頂層const是指指標本身是個常量(或者物件自身是個常量);底層const是指指標指向的物件是個const

constexprconst的不同在於,它要求它初值必須為常量表示式。另外,它的作用和頂層const一致。

int n =1;

constepr int

*p =

&n;

不知道變數是什麼型別的時候,用auto進行說明,讓編譯器自己根據初始值猜去吧。

auto a=

mistyfunc()

;

decltype(expr)會返回表示式或者函式expr的結果型別,但是實際上它並不會去計算該表示式,而是分析得到表示式的型別。decltype(expr)auto不同的一點是前者會儲存頂級cosnt和引用作為返回的型別,但是auto卻會忽略二者。不同的原因在於decltype(expr)雖然根據expr返回型別,但並不會將expr的值賦值給變數。但是auto卻會把表示式的值初始化給變數。

decltype((expr))返回的是引用!

稍加分析

auto型別說明符是根據表示式值的型別推斷變數的型別。如果表示式的值型別是個頂層const,那它的意思是它的變數值(也就是那個位址不可改變),並非說它指向的記憶體中的資料不可改變,所以auto拿到指向該記憶體的位址,但是並不會改變該變數值,這是合情合理的。

至於引用,引用用來賦值時,變數得到的結果是引用所繫結的變數的值,所以當然得是變數的型別,即捨棄引用符號。

C語言 指標變數運算操作

指標變數除了的8種基本操作,還可以使用關係運算子來比較指標。1 賦值 注意,位址應該和指標型別相容。也就是說,不能把double型別的位址賦給指向int的指標,至少要避免不明智的型別轉換。c99 c11已經強制不允許這樣做。int a 6 int b 0 int p1 a int p2 賦值 p2 ...

c環境變數操作函式

getenv 取得環境變數內容 相關函式 putenv,setenv,unsetenv 表頭檔案 include 定義函式 char getenv const char name 函式說明 getenv 用來取得引數name環境變數的內容。引數name為環境變數的名稱,如果該變數存在則會返回指向該內...

變數及變數操作步驟

變數 存放資料的,並且該變數中的資料是可以發生改變的 常用資料型別 整數型別 int 浮點型別 double 字串型別 string 字元型別 char 布林型別 boolean 變數的操作步驟 第一步 宣告變數,也就是確定當前變數存放資料的型別 語法格式 資料型別 變數名稱 如 int a 資料型...