宣告指標的一般形式:資料型別 * 指標變數名
(1)在初始化時賦值
(2)在後期賦值
(1)通過變數名訪問乙個變數是直接的, 通過指標訪問乙個變數是間接的
(2)p = &i;意思是取變數i的位址賦給變數p
(1)指標變數名是p, 而不是*p
(2)指標變數不可以直接賦值
int a = 100;
int *p;
p = 100;//編譯不能通過
(3)不可以將*p當變數使用
int *p = 100;//指標沒有獲得位址
指標運算子與位址運算子
&和*的運算子優先順序相同,按自右向左的方向結合,因此
&*p是先進行*運算,*p相當於變數a,再進行&運算,&*p相當於去變數a的位址
*&a事先進行&運算,&a就是取變數a的位址,然後進行*運算, *&a就相當於取變數a所在位址的值,實際就是變數a
/*輸出指標運算後的位址值*/
#include using namespace std;
void main()
(1)*(p--)相當於a[i--],先對p進行*運算,再使p自減
(2)*(++p)相當於a[++i],先使p自加, 再作*運算
(3)*(--p)相當於a[--i], 先使p自減, 再作*運算
a代表二維陣列的位址,通過指標運算子可以獲取陣列中的元素
(1) a+n表示第n行的首位址
(2)&a[0]0既可以看作陣列0行0列的首位址,同樣可以看做二維陣列的首位址, &a[m][n]就是第m行n列元素的位址
(3)&a[0]是第0行的首位址,當然&a[n]就是第n行的首位址
(4)a[0]+n,表示第0行第n個元素位址
(5)*(*(a+n)+m)表示第n行第m列元素
(6)*(a[n]+m)表示第n行第m列元素
學習注意事項
培養個人能力靠刷題,可以多參加cf code force 和tc top coder 這兩個比賽,它們是國際性的比賽,並且每隔兩三天都會有一場。當然,一味刷題是不夠的,已經做對的題誠然讓你感到驕傲,但只有不會的題才能給你帶來能力的提公升。面對不會的題,盡力思考,看懂題解,消化之後過了這道題,這是補題...
c語言指標注意事項
這幾天對c語言的指標溫習了下,感覺理解又更深入了一步 c語言的精髓是指標我想確實一點都不錯,但是在使用的時候有很多要注意的地方,大概總結一下 1.指標指向常量區,是不能修改其值的 比如 char p abcfd char ptr abcfd p 1 c 此時會報錯,因為 abcfd 為常量區,其值是...
智慧型指標注意事項
1 乙個裸得指標不要使用兩個shared ptr unique ptr 2 用weak ptr打破迴圈引用 3 當需要在類得內部介面中,需要將this作為智慧型指標使用,需要用該類派生自enable shared from this 4 使用share ptr作為函式介面時候,最好用 const s...