總結下自己關於指標裡面一些容易混淆的東西

2021-06-05 09:37:40 字數 1477 閱讀 9633

c++中指標:

這裡先講幾個準備的東西,對於乙個函式而言,假如沒有其他的作用的話,函式的函式名就是被當做是函式的位址使用的,就像是陣列一樣,陣列是不能夠被複製的,陣列的陣列名就是自動的可以轉化為這個陣列的第乙個值得位址。

1.指向函式的指標

eg: int (*p)(int t,string s);首先明確一點,這樣的造型就是乙個指向函式的指標的形式,遵循從內到外的原則進行讀,那就是p是乙個指標,這個指標式指向乙個接受兩個形參的而且返回型別是int的乙個函式。 可以用typedef進行對於這種指標的簡化,先舉個例子來說:typedef int(* pointer )(int &,int &)那麼這個時候pointer就是作為一類指標而言了,而且這個類的指標式可以定義指標的,這裡這個pointer就是代表了一類指向兩個形參,形參為int的返回型別是int的函式的指標,同時可以用pointer進行對指標的賦值,pointer a;這裡a就是被定為乙個指向接受兩個int形參,返回乙個int的函式。

2.指向陣列的指標

一維陣列:

舉個例子:int a[12]對於一維陣列而言,他的a表示的就是這個一維陣列的首位址,所以a=&a[0],此外還有的就是*(a+n)=a[n],這個是必須把當做公式一樣來記憶。還有就是假如把陣列作為函式的形參進行傳遞的話實際上傳遞的是陣列的位址,也就是指標了,那麼我們可以這樣的f(int a),或者是f(int *a)

此外還有乙個要記憶的就是對於一維的char來說 char *m="asdaw";這是可以的

二維陣列:

對於二維陣列例如int a[10][10]就是可以是看做為乙個十行十列的矩陣了,那麼對於他的首位址呢?a就是表示的是第一行的整形陣列的位址,記住這裡是指的是陣列的首位址

那麼假如a+1的話實際上就是指的是(可以見課本比較形象)指向下乙個十行陣列的指標,那麼*(a+1)的呢,他的意思是下乙個十行陣列的第乙個整形數字的位址也就是,實際上這裡面,a+1和*(a+1)是一樣的,經過測試的。

那麼對於*(*(a+1)+2)指的就是a[1][2],此外假如用二維數作為函式的形參的話,一樣的記住的是傳遞的是指標,但是編譯器是很友好的,那麼就是可以也是傳遞乙個二維陣列的,f(int (*a)[10])(這裡的是指乙個指向10行乙個的指標,指標指向的是乙個int的陣列)或者是f(int a[10])反正無論如何都要確定的是有多少的行,

對於這個陣列的初始化的話int *p=&a[0][0],或int *p=a[0]//這裡不使用取位址的原因是a[0]=*(a+0)=*a就是第一行的首位址。

此外還要注意的就是乙個int *p[10]這裡的意思是乙個十個的陣列,全是指向int的指標。

3.const修飾的物件和指標

int const *p 和const int *p一樣的都是指的是p所指向的物件是const的,此外,int * const p那麼就是表明的話p是乙個const的指標了。

還有就是迭代器const_iterator 和const iterator 前者是指迭代器指向的那個元素是乙個const的,後者則是表示這個迭代器是乙個const的,

總結下自己對於一些事物的看法

總結下自己對於一些事物的看法 學會了拒絕比人,感覺當時挺不好意思的,但是過後發現也就那樣,不知別人如何想,但是自己感覺輕鬆多了 學會了爭取本該屬於自己的東西.比如去競爭乙個 優秀的 頭銜,跟別人要自己曾經借給他的東西 學會了放棄,比如需要學的it技能的方向太多了,放棄自己覺得不喜歡的或者不擅長的.放...

關於指標的一些總結

指標和陣列一樣,都是基於其它型別的。指標的宣告 int p updates 運算子兩邊的空格是可選的。對每個指標變數命名,都需要乙個 變數名,為取址,它的值為變數的位址 32位 指標變數,為指標儲存的位址所儲存的值。可以通過改變它來改變。malloc 可以分配記憶體,但c 更好的方法是使用new。i...

總結 分享一下自己最近的一些收穫

前陣子我在公司換了乙個部門,總的來說自己還是很滿意的。現在有時間研究自己喜歡的東西,從原來繁重的編碼任務中解脫出來,做技術新穎的東西,很有意思。最近主要做了這樣一些事 1.小小的玩了一下linux。說來慚愧,作為 計算機科班 出身的我居然之前還沒怎麼用過linux 就在學校做實驗的時候用過幾次 最近...