c 的指標到底有什麼用?

時間 2021-06-13 21:37:10

1樓:乙個渴望成長的孩子

指標可以理解成為記錄了記憶體中的乙個位址。我們都知道計算機的記憶體中記錄的都是0和1,那這些0和1代表什麼意思呢?要怎麼去解讀某個位址中的0和1呢?這就需要用到指標的型別。

再有就是由於指標只記錄了一小段位址,那解讀資料時要在記憶體中取多少資料來解讀呢?比如乙個int*的指標就是告訴cpu解讀這指標的內容時你要從該指標指向的位址開始往後取四個位元組的資料去解讀

2樓:melos

用處很多,主要的有如下:

1、標註位址

比如你動態申請的記憶體之類的,或者函式指標之類的2、方便運算

比如,一些採用迭代器遍歷之類的演算法

3、傳參優化

比如,你某個需要大量呼叫的函式的引數,恰好是個巨大的型別又比如,c++預設就將陣列引數降為指標

4、實現多型,定義介面,,,,

3樓:我比梅西小一歲

一塊資料存在記憶體中怎麼找到它呢?通過記憶體位址。這個記憶體位址我想放在乙個地方方便下次使用,於是就把它放在乙個變數裡面,並且把這個變數叫做指標。

這個不是c++特有的,所有語言都離不開這個基本原理,有沒有指標這個概念就看這門語言怎麼設計。

4樓:

現有的幾個回答都有點離題,只講了指標的具體使用方法或者原理,沒有回答題目要問的點。實際上很多人對指標的疑惑是,我們為什麼需要指標這種資料型別?

我之前在另乙個問題下面回答過,避免重複,就不在這裡抄一遍了。參見

怎樣能快速弄懂C語言的指標?

5樓:山間清風

C/C++中指標是常用的變數,他指向乙個位址空間,而這個位址空間可以是儲存資料的變數、陣列、結構體、物件,也可以是某個函式的位址,甚至是某個位址本生,而指標變數長度是固定的佔4個位元組,定義形式如下:

C/C++中指標是常用的變數,他指向乙個位址空間,而這個位址空間可以是儲存資料的變數、陣列、結構體、物件等等,也可以是某個函式的位址,甚至是某個位址本生,而指標變數長度是固定的佔4個位元組,定義形式如下:

型別 *名稱

指標使用時應該小心,因為有可能導致記憶體洩露,原因有很多,可能是申請了記憶體卻忘記釋放,也可能是位址的記憶體空間已釋放在或者越界,指標指向了乙個非法的空間位址,一旦進行寫入等操作,就會引起程式直接崩潰,因此使用指標時需多加注意。

例子定義了乙個交換兩個整數的函式,引數使用了指標,如果不用指標那麼交換的僅僅是函式內部定義的兩個變數,而不是外部的位址,使用指標時最好先判斷是否空指標再使用。另外指標可以申請記憶體來使用,用完之後記得釋放,並且要把指標變數賦為空值。

此外指標還可以用於指向函式,尤其在呼叫外部動態鏈結庫時,為了呼叫介面需要用到函式指標。指標還可以指向指標,就是指標的指標,定義方法就是在指標變數前再加個*,如int **p;這在一些com的呼叫中會使用到。

6樓:CPP加油站

指標本身它就是乙個變數而已,跟其他基本型別沒有啥區別呀,只是它比較特別的是,這個變數裡面儲存的內容是乙個位址,你就像int i=2;這個i也是個變數,但它的值是2,而int *p = &i;這個p也是個變數,只是它裡面儲存的是變數i的位址而已。

至於用處,一般操作一塊記憶體這種都需要用到指標呀,舉兩個具體的例子:

第乙個是要把陣列當做引數傳到某個函式裡面,這時其實傳的是陣列首位址,它就是個指標形式;

第二個是申請動態記憶體,也必須要使用指標。

我覺得沒有必要把指標搞得魔幻化,熟悉以後也就是這麼回事。

7樓:florent

inta=

10;int*b=

&a;那麼a就是乙個代表整數值10的變數,那a這個變數是存在什麼地方呢?當時是廢話肯定在記憶體裡面啦,但是記憶體現在可是相當大的乙個地方,那a具體在什麼地方呢?我們就說要找到a的位址。

所謂指標型別就是指向乙個具體變數位置的資料型別。

那為什麼會有int指標,char指標等等,因為每種不同型別的變數所佔的記憶體大小都是不一樣的,所以int* b就完整的表述了a這個變數所在的位址並且是從這個位址開始占用了多少的記憶體空間。

理解了這些那我們看乙個最簡單的應用,比如我現在要寫乙個交換兩個變數值的函式,如果我們寫成這個樣子

#include "stdio.h"

void swap(int a, int b)

int main()

顯然這樣寫是不行的,因為函式在傳參的時候是會複製一次兩個引數的值,函式是不會對外面的變數產生影響的。那該怎麼辦呢?很簡單:

#include "stdio.h"

void swap(int *a, int *b)

int main()

這時候我們傳進swap函式的就不再是10和11這兩個數值了,而是a和b這兩個變數在記憶體中的位址。這時候我們就可以交換他們的數值了。

這裡比較繞的還是取位址符和解引用符吧,簡單說宣告指標變數的時候我們用*,對乙個普通變數去位址的時候用&,對指標變數取變數的值的時候是*。有點繞慢慢習慣吧。。。

酵素到底有什麼用?

賽貝露 1.氧化作用 酵素的第一種作用,是氧化還原反應。氧化即是物質與氧氣結合成為氧化物的過程,而還原是氧化物中的氧分子消失,回覆到原始狀態的過程。酵素即是此反應過程中不可或缺的催化劑,人體呼吸及一連串的熱量產生 代謝等,就是氧化還原反應。2.分解作用 當我們咀嚼公尺飯時,公尺飯中的澱粉,會被唾液中...

人結婚到底有什麼用?

則已 這個問題困擾我很久了,我不知道為啥都樂於結婚呢?有啥用呢?怕對方離開你?不也能離婚嗎?分別人錢?婚前財產分不了吧。反倒是結婚造成了很多麻煩,買房需要假離婚,為孩子上學還有假離婚的。我只能想到比如為了取得國籍,戶口能有用,但大部分結婚的人用不上這個目的吧。至於什麼手術簽字,繼承,扶養之類的,完全...

旅遊到底有什麼用?

頭角崢嶸 旅遊,從自己待膩的地方到別人待膩的地方。不出去旅遊就不知道祖國山河到底有多大,就不知道正宗的北京烤鴨跟你在外賣平台上點的有啥不一樣,也就不知道語言除了普通話還有這麼多種,甚至不會知道雖然同在乙個天空下但是呼吸的空氣確實是不一樣的。 宜興大胸雞 旅行的意義,不是逃避,不是豔遇,不是放鬆心情,...