《面試筆記》const用法

2021-10-22 13:24:53 字數 1666 閱讀 8427

const實際上保證的,並不是變數的值不得改動,而是變數指向的那個記憶體位址不得改動。

宣告的時候必須初始化,一旦宣告,這個值將不能被改變

int val =

100;

const

char a;

//錯誤,未初始化

const

int b = val;

//正確,此時a為乙個常量,不能被改變

b =28

;//錯誤,a為常量,不能當作左值

常量在後,指標的指向不可以修改

常量在前,指標的指向可以修改

主要看const修飾**

const

int*p=

&a;//const修飾*p(指標指向的值不可以修改)常量指標

int*

const p=

&a;//const修飾p(指標的指向不可以修改)指標常量

const

int*

const p=

&a;//都修飾(都不能修改)

void

test1

(int a,

char

*b,float

&c);

//普通入參

void

test2

(const

int a,

const

char

*b,const

float

&c);

//const修飾的入參

const

intfun1

(int a)

;const

char

*fun2

(char b)

;const person &

fun3

(person p)

;//person是自定義的類。返回值採用引用 不常用

//主調函式

intmain()

class

person

;int person::

fun3

(int c)

const

const實際上保證的,並不是變數的值不得改動,而是變數指向的那個記憶體位址不得改動。對於簡單型別的資料(數值、字串、布林值),值就儲存在變數指向的那個記憶體位址,因此等同於常量。但對於復合型別的資料(主要是物件和陣列),變數指向的記憶體位址,儲存的只是乙個指標,const只能保證這個指標是固定的,至於它指向的資料結構是不是可變的,就完全不能控制了。可以修改復合資料型別的的屬性。

class

person

fun函式其實有兩個引數:

void fun(person *this, int a);

第乙個引數是person *const this(this 就代表指向該函式所作用的物件的指標)

在fun1函式後面加const相當於:

void fun(person *const this, int a);此時指標的指向不能改變

面試筆記1

今天開始準備找實習了,開始準備實習的東西了。接下來開始寫今天看到的小知識。1.宣告,定義,初始化 宣告是指extern int i 定義是指int i 初始化int i 0 區別在於,宣告不分配儲存空間,在這裡編譯的時候是不管的,只有當需要用到i的時候才去檢查。定義的話,就分配一塊空間給它。初始化的...

面試筆記3

有關函式宣告的空間問題 乙個函式在宣告後如果不寫函式體是不會分配空間的,所以實現這個函式也就相當於初始化函式這個變數,同時也就引申出了變數如果只宣告的話是不會分配的空間的?可以這麼認為,因為靜態變數跟全域性變數都是自動初始化為0的。另外在c語言中 void fun 等同於 void fun 在c 語...

實習面試筆記

fib資料庫事務隔離級別有4個 由低到高依次為 read uncommitted,讀到了未提交的事物,只是 add 還沒有 commit read committed,讀到了上一次的commit,也就是說還沒有更新 最新的commit repeatable read,保證讀取最新的 commit,為...