今天首先學習了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 代表該指標指所指向記憶體空間中的值,切記指標只能存放有效的記憶體空間位址,不能存放其...