學習指標注意事項

2021-06-27 05:30:25 字數 1014 閱讀 5873

宣告指標的一般形式:資料型別 * 指標變數名

(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...