C語言的迷惑行為 指標和const

2021-10-09 11:58:09 字數 1116 閱讀 2421

指標:const你去哪!!!

const:我去哪不重要,我在哪才重要。

指標是c語言的靈魂。const是c語言的乙個限定修飾符。當他們兩個結合在一起時,會發生很多有趣的事情。

在c語言裡,const和指標型別變數會組合為下面的形式

const

int*ptr;

intconst

*prt;

int*

const ptr;

const int *ptr表示不可以通過指標修改它所指向的變數

在c語言中,我們可以通過指標修改它所指向的變數的值。

int

main()

程式輸出:

a = 30, b = 30
我們發現指標的權力太大了,它不僅可以修改變數,甚至常量也可修改(c語言不是一種型別檢查嚴格的語言)。

當你希望限制指標的權力時,你可以給它加上const,這樣你就不可以通過指標修改它所指向變數(常量)的值。const int *ptr常常出現在函式引數中。我們在函式傳參時,對於乙個較大的資料(大的結構體),我們偏向於傳遞指標(位址),因為這樣在引數複製是會減少開銷。但是又不希望在函式體內對資料進行改變,我們可以加上const進行限制。

const int *ptrint const *ptr起到的效果是一樣的,這兩種寫法起到的作用是一樣的。

int * const ptr表示不可以改變指標的指向

這種型別的指標必須在宣告時賦值,不然毫無意義。

int

main()

編譯器輸出:

error: assignment of read-only variable 'ptr'

ptr =

&b;

c語言的指標和指標變數,c語言中的指標和陣列關聯

1 首先什麼是指標,很簡單,就是代表著乙個空間,這個空間指向某個位址,位址裡面又存有我們參加的儲存的值。3 指標變數的定義,取位址運算子和取值運算子 首先是指標變數的定義和賦值 變數型別 用的是指標指向的位址所儲存的值得資料型別 指標變數名 記得必須加 號 乙個位址 一般用取址運算子 在定義和初始化...

C 語言的黑客行為

在c 中,利用c 編譯器在實現虛函式呼叫時的某些伎倆,我們可以在類外直接呼叫到類的私有成員函式!如下,中有詳細的說明。cpp view plain copy c 語言的黑客行為 include class coo void coo foo intmain 注意 這裡沒有建立物件 即沒有this指標 ...

c語言指標 指標和指標變數

指標是c語言中乙個重要的概念,也是c語言的重要角色。可以說指標是c的精華所在,學習指標雖然不易,但是只要肯花上時間去反覆的理解和實踐,就一定可以很好的掌握它。一 指標是什麼 指標到底是什麼?我們先舉乙個例子。假設我們在火車站 附近開了一家賓館,這家賓館有三千多間屋子,為了方便管理,我們給每個房間都加...