const 指標的一些總結

2021-08-25 01:35:03 字數 2242 閱讀 7463

前兩天在網上看到華為的一些筆試題,對基礎的掌握仍然是這種大公司所重視的。其間對指標掌握的要求比較多,有一道是關於const指標的。看到那道題,回來整理了一些有關const指標的內容,分享一下。

const說明指標變數,組合的情況可能會顯得很複雜。使用指標時要涉及兩個目標,即指標本身和指標所指的物件。關於const指標變數,可歸結為以下三種:

1.指向常量的指標變數;

2.常指標變數;

3.指向常量的常指標變數。

下面來分別談談這三種情況。

一、指向常量的指標變數:

宣告格式: const type * var_name;

或 type const * var_name;

特點: 可改值。

將指標宣告冠以const,使指向的物件為常量,而不是指標為常量。注意:指向常量的指標不一定指向真正的常量,它也可以指向常量,只是從該指標的角度來看,它所指向的物件是常量,通過該指標不能修改它指向的物件。它還可以指向其它的物件,可以不初始化。

-----eg:

int a = 0,b = 1;

const int c = 3;

const int* pi; //等同於 (const int*) pi;

pi = &a;

*pi = 10; //錯誤:不能修改它指向的物件。

a = 10;

pi = &b;

*pi = &b;

*pi = 20; //錯誤:不能修改它指向的物件。

b = 20;

pi = &c;

*pi = &c;

*pi = 30; //錯誤:不能修改它指向的物件。

-----eg2:

const char* pc = "asdf";

pc[3] = 'a'; //錯誤:不能修改它指向的物件。

pc = "ghik";

-----eg3:

const char* step[3] =

;step[2] = "skip";

step[2][1] = 'i'; //錯誤:不能修改它指向的物件。

二、常指標常量:

宣告格式: type* const var_name;

特點: 可改物件。

要把指標本身,而不是它指向的物件宣告為常量,採用運算子 *const,必須初始化,通過該指標可以修改它指向的物件,但它不可以指向其他的物件。

-----eg:

int a = 0,b = 1;

int* const pi = &a; //等於 int* (const pi) = &a;

*pi = 10;

pi = &b; //錯誤:pi本身為常量,不能指向其他物件。

三、指向常量的常指標變數:

宣告格式: const type * const var_name;

特點: 值與物件均不能改。

要使兩個目標都是常量,兩者都要宣告為 const 。

eg:int a = 0,b = 1;

const int c = 3;

const int* const pi = &a; //相當於: (const int*)(const pi) = &a;

*pi = 10; //錯誤:不能修改它的物件。

a = 10;

pi = &b; //錯誤:不能指向其它物件。

eg2:

const char* const pc = "asdf";

pc[3] = 'a'; //錯誤:不能修改它的物件。

pc = "ghik"; //錯誤:不能指向其它物件。

eg3:

const char* const step[3] =

;step[2] = "skip"; //錯誤:不能指向其它物件。

step[2][1] = 'i'; //錯誤:不能修改它的物件。

一般的,當宣告中出現 const 描述符時,它修飾的是緊跟其後的宣告元素或者在 const 成員函式宣告中函式的 this 指標。

注意:可以將變數的位址賦給指向常量的指標變數,不會因此有什麼害處,但是,常量的位址不能賦給無約束的指標。

eg:int a = 1;

const int c = 2;

const int* p1 = &c;

const int* p2 = &a;

int* p3 = &c; //非法!

int* const p4 = &c; //非法! 指標常量 p4 能夠改值。

const int* const p5 = &c;

指標的一些總結

2016年9月14日 指標陣列和陣列指標 指標陣列是指 陣列元素都是指標 int ptr 5 int a 2,b 3,c 6,p,q p a q b ptr 0 a 存入的是a的位址 ptr 1 b ptr 2 c cout ptr 0 ptr 0 endl cout ptr 1 ptr 1 end...

關於const引用 常量指標 指標常量的一些知識

應該將不需要修改的引用形參定義為const引用。普通的非const引用形參在使用時不太靈活。這樣的形參既不能用const物件初始化,也不能用字面值或者產生右值的表示式實參初始化,如下所示 int incr int val int main 理解返回引用至關重要的是 千萬不能返回區域性變數的引用。當然...

關於指標的一些總結

指標和陣列一樣,都是基於其它型別的。指標的宣告 int p updates 運算子兩邊的空格是可選的。對每個指標變數命名,都需要乙個 變數名,為取址,它的值為變數的位址 32位 指標變數,為指標儲存的位址所儲存的值。可以通過改變它來改變。malloc 可以分配記憶體,但c 更好的方法是使用new。i...