C語言指標的作用有哪些c語言中用指標的好處有哪些?

2021-05-29 15:03:33 字數 5844 閱讀 9479

1樓:嘩嘩嘩嘩

指標的用途非常廣泛,比如如果你想通過函式改變一個變數的值,就得用指標而不能用值傳遞。還有在很多時候變數,特別是物件的資料量實在太大,程式設計師就會用指標來做形參,只需要傳遞一個地址就行,大大提高了效率。簡單地說指標就是指向變數和物件的地址。

基本說明:

1、在計算機中,所有的資料都是存放在儲存器中的。 一般把儲存器中的一個位元組稱為一個記憶體單元, 不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等;

2、為了正確地訪問這些記憶體單元,須為每個記憶體單元編上號。 根據一個記憶體單元的編號即可準確地找到該記憶體單元。既然根據記憶體單元的編號或地址就可以找到所需的記憶體單元,所以通常也把這個地址稱為指標。

記憶體單元的指標和記憶體單元的內容是兩個不同的概念。

2樓:張簡元芹是群

指標是c語言中廣泛使用的一種資料型別。

運用指標程式設計是c語言最主要的風格之一。利用指標變數可以表示各種資料結構;

能很方便地使用陣列和字串;

並能象組合語言一樣處理記憶體地址,從而編出精練而高效的程式。指標極大地豐富了c語言的功能。

學習指標是學習c語言中最重要的一環,

能否正確理解和使用指標是我們是否掌握c語言的一個標誌。同時,

指標也是c語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多程式設計,上機除錯。只要作到這些,指標也是不難掌握的。

指標的基本概念

在計算機中,所有的資料都是存放在儲存器中的。

一般把儲存器中的一個位元組稱為一個記憶體單元,

不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等,

在第二章中已有詳細的介紹。為了正確地訪問這些記憶體單元,

必須為每個記憶體單元編上號。

根據一個記憶體單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做地址。

既然根據記憶體單元的編號或地址就可以找到所需的記憶體單元,所以通常也把這個地址稱為指標。

記憶體單元的指標和記憶體單元的內容是兩個不同的概念。

可以用一個通俗的例子來說明它們之間的關係。我們到銀行去存取款時,

銀行工作人員將根據我們的帳號去找我們的存款單,

找到之後在存單上寫入存款、取款的金額。在這裡,帳號就是存單的指標,

存款數是存單的內容。對於一個記憶體單元來說,單元的地址即為指標,

其中存放的資料才是該單元的內容。在c語言中,

允許用一個變數來存放指標,這種變數稱為指標變數。因此,

一個指標變數的值就是某個記憶體單元的地址或稱為某記憶體單元的指標。圖中,設有字元變數c,其內容為「k」(ascii碼為十進位制數

75),c佔用了011a號單元(地址用十六進數表示)。設有指標變數p,內容為011a,

這種情況我們稱為p指向變數c,或說p是指向變數c的指標。

嚴格地說,一個指標是一個地址,

是一個常量。而一個指標變數卻可以被賦予不同的指標值,是變。

但在常把指標變數簡稱為指標。為了避免混淆,我們中約定:「指標」是指地址,

是常量,「指標變數」是指取值為地址的變數。

定義指標的目的是為了通過指標去訪問記憶體單元。

既然指標變數的值是一個地址,

那麼這個地址不僅可以是變數的地址,

也可以是其它資料結構的地址。在一個指標變數中存放一

個陣列或一個函式的首地址有何意義呢?

因為陣列或函式都是連續存放的。通過訪問指標變數取得了陣列或函式的首地址,

也就找到了該陣列或函式。這樣一來,

凡是出現陣列,函式的地方都可以用一個指標變數來表示,

只要該指標變數中賦予陣列或函式的首地址即可。這樣做,

將會使程式的概念十分清楚,程式本身也精練,高效。在c語言中,

一種資料型別或資料結構往往都佔有一組連續的記憶體單元。

用「地址」這個概念並不能很好地描述一種資料型別或資料結構,

而「指標」雖然實際上也是一個地址,但它卻是一個資料結構的首地址,

它是「指向」一個資料結構的,因而概念更為清楚,表示更為明確。

這也是引入「指標」概念的一個重要原因。

c語言中用指標的好處有哪些?

3樓:匿名使用者

指標非常的好,它把相同的事物歸類,然後把事物做出標記,避免給相同的特點做變數。比如說你和你同學,你們兩個人都有心臟、肝、肺等器官,如果命名心臟1、心臟2這樣比較麻煩,這時如果用上指標,指向你說心臟時說的是你的心臟,指向你同學時說的是你同學的心臟,如果人非常的多,你不用指標,那麼命名心臟1、2、3、4、5.。。。那是非常的多的不必要的變數。

我現在運用plc和wincc連線時有的時候就用指標。節省了通訊時間,省略了很多的變數。

4樓:匿名使用者

c語言指標的作用很多,指標可以直接操作記憶體,理解為直接操作記憶體的優點有哪些。

1、效率更高,這個很容易理解,直接操作記憶體,效率必然更高2、可以寫複雜度更高的資料結構,這個也好理解,程式設計師可以操作記憶體,當然可以寫出靈活、複雜的資料結構

3、編寫出簡潔、緊湊、高效的程式

5樓:香帥之楓

所有的資料都是放在記憶體空間上的,一般不用指標用變數的話,你需要自動分配空間給你的變數來進行運算元據。而一旦使用了指標,你就可以直接在記憶體空間上進行操作,而不需要考慮資料變數的問題。你只要知道指標地址就可以進行操作

c語言中指標的作用是什麼?

6樓:匿名使用者

指標指向地址,指標的特性就是在地址不變的情況下,可以很方便的修改所指向的內容

最重要的應用有兩個,一是函式引數,二是函式指標函式引數:函式返回值只有一個,如果想回傳多個引數,則必須使用指標函式指標:典型應用就是**函式(callback)

7樓:杜爺1號

簡單地說指標就是指向變數和物件的地址。

指標的用途非常廣泛,比如如果你想通過函式改變一個變數的值,就得用指標而不能用值傳遞。還有在很多時候變數,特別是物件的資料量實在太大,程式設計師就會用指標來做形參,只需要傳遞一個地址就行,大大提高了效率。

以上還只是指標的初步應用,隨著你在c語言學習上的逐步深入,你會發現更多的用途的。

8樓:匿名使用者

用來簡單的標示一個地址引用。

指向變數地址,便於對變數操作。

就像桌面的快捷方式,它指向一個真實的檔案。

就像給儲存器的某個儲存地址單元起了個名字,操作這個名字就等於操作的這個儲存地址單元,比如,要給某個儲存地址單元賦值,這時候就把值賦給,指向這個儲存地址的名字。也就是說,使用指標表示地址單元比直接用記憶體地址號表示方式,更人性化,操作更靈活。

9樓:匿名使用者

指向地址啊。

比如a是指標

*a 就是指a地址所存的數字。

呼叫其中數字。

10樓:匿名使用者

指標是一種存放另一個變數的地址的變數。

比如申請一個整形變數 int a = 128; 再申請一個指標讓這個指標指向變數a.

int *p;

p = &a; //取a在記憶體中的地址,把a的地址賦給p。這樣p就指向了變數a的地址。

11樓:奧·備侖思

指標,首先從概念上是「變數」。

它存放的是記憶體地址,而不是具體資料。

12樓:天涯海角情緣在

怎麼說指標的作用呢?通俗點講就是當你用上指標的時候,你到目標地的就會有捷徑了,移動性強,可操作性很大,對於資料的刪除、插入、編輯都很方便,換成其他的,則比較麻煩。

13樓:匿名使用者

c語言中指標的作用是什麼?啊這個問題還不好一句回答。這是c本身是低階語言,能夠操動記憶體的特效決定的,早期的時候對計算機說這就是效率。

現在好像不是這樣說了,都說指標很危險,特別是在目前複雜作業系統下。

要是說作用是什麼?是求高效的低階語言特有的特質。

14樓:匿名使用者

指標啊,用來取一個元素在記憶體中的地址

c語言的指標有什麼實際作用?

15樓:匿名使用者

指標實際上就是一個記憶體地址,比如一個函式指標,就是一個函式的入口地址

,通過這個地址,系統就可以找到這個函式的位置並呼叫它。簡單地說指標就是指向變數和物件的地址。指標的用途非常廣泛,比如如果你想通過函式改變一個變數的值,就得用指標而不能用值傳遞。

還有在很多時候變數,特別是物件的資料量實在太大,程式設計師就會用指標來做形參,只需要傳遞一個地址就行,大大提高了效率。以上還只是指標的初步應用,隨著你在c++學習上的逐步深入,你會發現更多的用途的。

c語言裡面指標到底有什麼作用啊

16樓:ol果凍

用處大了啊。樓主。你學了指標以後就會知道了。

比如說和結構體的結合使用。使得檔案操作。以及連結串列的應用更加方便。

指標式直接對記憶體的操作。很多情況都很方便。但是剛開始學的話也容易出錯。

比如說在與函式結合的時候。總之樓主努力學習吧。見得多了就知道了。

其實並不太難。(*^__^*) 。不知道能不能幫上你。。。

17樓:匿名使用者

樓主,這個問題很泛泛。建議你仔細看書。

可以說,沒有學好指標,就沒有學好c語言。

指標之於c語言的重要性,可見一斑啊。

指標本身能實現很多功能。建議樓主自己好好領會啊。

c語言中的指標到底有什麼用

18樓:匿名使用者

所有變數值儲存在記憶體中,而每個記憶體都有一個地址,所謂地址就是一個整數編號,如同門牌號碼用於定位(專業術語叫定址),一個地址對應一個位元組(8bit)的記憶體單元。

如今的編譯器,一個整數int型別的值佔用32位bit,也就是4位元組,編譯器將第一個位元組的編號定義為該整數的地址,由於儲存地址的變數就像一個箭頭指向某地址,而稱為指標變數。

int a =10; //定義一個整數變數a,對其賦值10

int *p =&a;//定義一個指標變數p,對其賦值a的記憶體地址,&符號意思為引用跟隨其後的變數地址。

cont <定址->取值

由於指標是一個變數的首個位元組的地址,所以要告訴編譯器被指地址包含連續多少個位元組,因此指標也有型別。比如上面例子中宣告瞭p指標是個整數指標,這樣編譯器知道p指向一個4位元組的記憶體塊。

你可以將指標變數看做一般的整數變數來理解,用來儲存一個整數(地址是個整數),只是,該整數代表著某地址,在這裡是a的地址。

在c/c++中很靈活,但是也很危險,也很難學,如果指標指向錯誤的地址會引起程式崩潰,因此在c#中已經被微軟封裝了,但內部還是有指標的。

如果有必要,c#中也可以使用指標,使用非安全**,在專案生成選項卡中勾選「允許非安全**」,然後就可以使用指標了,不過不建議這麼做。

unsafe

19樓:匿名使用者

指標起的作用是標識一塊記憶體。電腦記憶體上的每一個位元組都具有一個編號,稱為地址(可以簡單理解為指標),任何讀寫記憶體的指令都必須攜帶地址資訊,否則電腦不知道讀寫那塊記憶體。不管你的程式是用什麼語言寫的,要執行資料和**必須駐留記憶體,cpu要執行指令必須有一個「指標」(程式計數器)指向記憶體的**塊,如果某個指令要操作記憶體資料,該指令必須攜帶額外的地址資訊。

c語言的指標讓程式設計師具備直接操作和管理記憶體的能力,這個能力也是c語言適合編寫底層軟體的原因之一。現在拿得出手的作業系統都是用c語言(有時也用c++)和組合語言編寫的。在底層軟體領域c語言是佔統治地位的。

c語言對記憶體的操作都是通過指標來實現的,雖然c語言可以通過變數名訪問記憶體,但是編譯過後變數名被轉換為地址。

其他語言雖然沒有指標或者地址概念,但是訪問記憶體是需要地址的,所以與地址相關的底層操作由該語言的執行時庫承擔了,對程式設計師來說,地址就「不存在了」。

C語言中指標與陣列有什麼關係,C語言中,指標和陣列的區別和聯絡

c語言中陣列和引數可以通用,陣列有一個基址,c中用指標指向它,計算陣列元素地址的時候,是基址 元素位元組數 元素序號 1 陣列名bai代表陣列在記憶體du中的首地址。指標可zhi以儲存一個地址dao,也即指向某地回址。在c中,答 對於某地址的訪問有兩種方式 1.直接訪問,如用變數名進行賦值等 2.間...

C語言中,指標變數該如何使用呢,C語言中指標和指標變數的區別是什麼

int integer 0 為求來 地址運算子,指標用來儲存 源一些變數的bai地址 可以這樣訪du問 pinteger 得到 pinteger這個整形指標裡面的值 zhi0 建議看dao 相關的書,難懂的東西才有意義 所謂指標其實就是用來儲存地址的 就這樣想就好了 比如 int a,p p a 就...

C語言空指標,C語言中的空指標是什麼意思?

空指標是其值為null或0的指標,在下認為稱之為 指向 null或 指向 0的指標都是錯誤說法,因為若有int a,p a 則稱指標p指向了a,並不能說指標p指向了 a,只能說p的值是 a,不然就大錯特錯了。沒有指向 即沒有賦值 或指向的目標已銷燬了的指標稱為懸浮指標 可能人們據說的野指標也是它吧 ...