關於const 指標

2021-09-30 07:38:41 字數 993 閱讀 9656

第一種const指標:

const double *pc = 0;

這種型別的定義表示pc指標指向的記憶體的內容不可通過pc來修改!

const 變數的位址只能賦給const指標:

const double *pc = 0;

const double minwage = 9.60;

pc = &minwage;

但是const指標也可以指向非const變數

double dval = 3.14;

// ok: 不能通過pc 修改dval

// 雖然dval 本身不是乙個常量

pc = &dval; // ok

注意!即使是指向非const變數也不可以通過pc修改變數的內容,因為pc有const修飾.

dval = 3.14159; // ok

*pc = 3.14159; // 錯誤

正因為這種const指標可以保證指向得內容不通過這個指標被修改,所以大家才常用下面的函式方式:

int strcmp( const char *str1, const char *str2 );

第二種const指標:

int errnumb = 0;

int *const curerr = &errnumb;

這一種是指標不能指向其他位址,只能指向初始化位址.

如果寫出下面的**就會發生錯誤:

curerr = &myerrnumb; // 錯誤

第三種const指標:

這種const指標是錢兩種的結合,使得指向的內容和位址都不能發生變化.

const double pi = 3.14159;

const double *const pi_ptr = π

總上,應該了解,不論那種型別的const指標都不能限制它指向的記憶體內容不被修改,最多是限制不通過它被修改,或者限制它自己不被修改而已.

關於const與指標

定義常量指標時必須同時初始化它,以後不能更改它 int var int const c ptr var 指向int的常量指標 c ptr 123 true 沒有修改指向的物件,但可以修改指向的物件的值 c ptr false 不能修改常量指標本身指向常量 const 物件的指標 int var co...

關於const限定的字元指標

1 const char p 2 char const p 3 char const p 4 const char p 5 char const p 6 char const p 7 char const p 當然還有在 5 6 7 中再插入乙個const的情況,不過分析了以上7種,其它的就可類推了...

關於const和指標的專題

const和指標的問題是筆試裡經常出現的問題。這裡綜合一下各種不同的情況。首先是幾種const與指標組合的區分,比如 int b 500 const int a b 1 int const a b 2 int const a b 3 const int const a b 4 1 和 2 其實是一樣...