C語言之常指標

2021-06-04 16:20:10 字數 2053 閱讀 3083

今天首先學習了const變數定義的方式(兩種):

第一種定義方式:const 在型別的前面,例如:

const int var=100;

第二種定義方式:const 在型別的後面,例如:

int const var1=999;

注:這兩種定義方式沒有什麼區別。

1、const變數在定義的時候進行初始化;

2、當乙個變數被宣告為const變數時,意味著該變數是乙個常量,不可被修改;

3、該變數只能做右值,不能做左值;

然後我們學習了,const指標,也叫做常指標。

1、常指標在宣告的時候進行初始化;

2、指標不能再指向別的變數,指標的value不了被修改。

3、可以通過指標來修改變數的值。

常指標:例如:int * const pp=null;

指向常量的指標:

int x = 123;

const int *pc = &x;

1、指向常量的指標,該指標可以指向別的變數,指標的value可以更改。

2、指向常量的指標、不能賦值給乙個普通的指標

接下來我們做了一些練習(如下):

const int x=2,y=3;      //定義基本型別的const變數

int z=3;                         //定義乙個非const 變數 

const int *pc=&x;       //指向常量的指標

int *const cp = &z;     //常指標,指標不能再指向別的變數

int *pp = &z;               //定義乙個非const指標pp 把z的位址給了指標

z=y;                            // 對 const 變數只能做右值,不能做左值

x = y;                          // 錯 x是const變數,所以x的值不可更改

pc=&z;                      // 對 指向常量的指標,不能通過指標去修改指標所指向

//的記憶體空間的值,但是,指標可以指向別的變數。

*pc=10;                   //錯 指向常量的指標,不能通過指標去修改指標所指向

//的記憶體空間的值

*pc=y;                      //同上

*pc = 5;                   //同上

pc=pp;                   // 對 指向常量的指標可以改變指向的位址

//pc是乙個指向常量的指標,pp是乙個普通的指標。

//pp是乙個普通的指標。用乙個普通的指標給乙個常量的指標賦值是可以的。

pp = pc;              /*對

用乙個指向常量的指標,賦值給乙個普通的指標,不可以,

如果可以,那麼就可以通過普通的指標去修改記憶體的值

*/z = 5;                   //對 變數可以改變值,給乙個非const賦值是可以的。

z = x; //對 const只能做右值,用乙個const的變數給乙個非const變數賦值可以。

*cp = x; //錯 通過常指標改變指標所指向變數的值,原則上來講是可以的,

//如果只想的變數是const的,那麼不停編譯會有不同的結果。

cp=&x; //錯 cp是常指標不能改變指標自身的值。給常指標賦值是錯誤的。

//兩種觀點

pp = &x; //原則上是可以的,pp為普通的指標,可以通過這種方式給pp賦值。

//錯,通過指標去修改變數的值,而不管該變數是否為const,

//x是const常量,不能被改變。

pp = pc; //錯 普通的指標可以改變它指向的位址的值,指向常量的指標不可以改變它指向位址的值

//錯指向常量的指標不能賦值給乙個普通的指標

pp = cp; //對 cp指向的是乙個變數的位址,pp是乙個不同的指標,可以把cp的值給pp

//常指標可以賦值給乙個普通的指標

const int * const pp = &a; //記憶體空間和值都不能被改變

C語言中Const指標變數(常指標)

c語言中,指標是最難理解的一部分,尤其是const指標變數。include stdafx.h int main int argc,char argv 定義基本型別的const變數,const 位置在哪兒都可以 const int x 2,y 3 兩個常量 定義乙個非const變數 int z 3 乙...

C語言之指標

指標型別的本質分析 1 指標的本質 指標的本質 一種復合的資料型別。下面我將以下面幾個作為例子進行展開分析 a int p b int p c int parvalue 3 d int pfun 分析 所謂的資料型別就是具有某種資料特徵的東東,比如資料型別char,它的資料特徵就是它所佔據的記憶體為...

C語言之指標

指標的概念 什麼是指標?如果用一句話概括的的話那就是,乙個存放記憶體空間位址的變數。指標也是乙個變數,指標存放的內容是乙個位址,該位址指向乙個記憶體空間。指標變數的定義 int p 該變數用來存放乙個空間的位址。p 代表該指標指所指向記憶體空間中的值,切記指標只能存放有效的記憶體空間位址,不能存放其...