當前位置:首頁 » 編程語言 » 為什麼c語言指針速度快
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

為什麼c語言指針速度快

發布時間: 2022-06-02 17:17:53

c語言用指針比較快是不是因為直接訪問尋找變數需要的時間比較多 而指針直接從地址訪問就不用定址費時了

用指針不是減少了定址的時間,是省略了計算地址的步驟,要做的工作少了,所以說速度快。

用指針比較快,這個概念有點過時了。現在的編譯器,代碼優化的效率是很高的,在設定高優化級別的情況下,兩者幾乎沒有差別。另一方面,使用指針編程相對復雜,更容易導致潛在的錯誤,就軟體工程的角度來看,犧牲可靠性來換取速度的小量提升(甚至速度沒有提升)是劃算的。

結論,減少指針的使用,使用索引就很好。要想提升執行速度,編譯的時候把優先順序別設的高一點就可以了。

② 為什麼c語言指針運算速度快

採用指針的話!定址速度更快啊!

③ c語言用指針取值比用數組名取值快嗎

指針快
只不過現在計算機快了,幾乎沒有區別。

④ 在c語言中 指針寫起來麻煩。位運算也不知道是什麼用 聽說 是讓程序變快 是這樣嗎

指針確實很麻煩,用起來可以說利弊各佔一半吧。不過還是要多用。而位運算,確實使程序變快了,由於位運算直接對內存數據進行操作,不需要轉成十進制,因此處理速度非常快。有很多經典應用,建議您去網路查一些資料。

⑤ C語言 為什麼用指針變數效率較高

指針變數是有加減運算的,但是要注意以下幾點:

1.指針變數中存放的是地址值,也就是一個數字地址,例如某指針變數中的值是0x20000000,表示表示此指針變數存放的是內存中位於0x20000000地方的內存地址。指針變數可以加減,但是只能與整型數據加減,此時加減的含義並不是其地址值進行了加減,也就是說如果指針變數p的值是0x20000000,那麼p=p+2;的值並不是0x20000002,並不是地址值的簡單相加,那麼地址值加減多少是與指針指向的數據類型相關聯的,如果在32位的操作系統上,p是指向整型數據的指針變數,那麼p=p+2之後,p的地址值變成0x20000008,也就說實際上地址值加了多少呢:sizeof(int)*2這么多。說明白點,我們加減的數字是以指針指向的數據類型為量度的,P+2表示p在內存中前移兩個int的距離,如果p不是int類型,而是其他類型道理也是一樣。同樣指針與整型數據相減也是同樣的道理。

2.指針之間可以相減,但不可以相加:兩個同一類型的指針變數是可以相減的,他們的意義表示兩個指針指向的內存位置之間相隔多少個元素(注意是元素,並不是位元組數),例如對於int類型的指針p和p1. p1-p的意義表示他們之間相隔多少個int類型的元素。同樣對於其他類型的指針變數之間相減的意義也是一樣。 指針變數的自加和自減實際上是與整數1的加減運算。

3.指針之間可以比較大小。但是同樣也限於兩個相同類型的指針變數,不同類型的指針變數之間比較大小沒有任何意義。指針之間的大小比較的意義,表示在內存中他們指向的位置的高低關系。
如果還沒解決你的問題,可以加我網路HI賬號。

⑥ c語言為什麼比其它語言快

因為c語言可以直接操作內存里的數據,比如你定義了一個變數i ,int i= 8; 你就可以找到它的地址,在內存里找到儲存的8。然後你可以定義一個指針p,修改這個i的值。
#include <stdio.h>
int main()
{
int i = 8;

printf("%d\n",i);
int *p =&i;
*p =10;
printf("%d\n",i);
}
其他的java等等,都不能看到這個地址。。。

⑦ 為啥c語言要有指針

C語言沒有像高級語言那樣的引用類型,所以,在使用參數時,往往只能通過復制參數值來傳遞,即所謂的值傳遞,但是這樣就造成了內存的浪費等諸多原因,指針為C語言提供了一種可以使用地址傳遞值的方法,在運行過程中,操作的將是原始的數據,而不是數據的拷貝。

⑧ 都說c語言指針功能強大,我怎麼體會不到呢

首先要明確C語言的用處
C語言現在在大多數IT行業里認為是非主流的,因為大多數IT行業是互聯網公司,多數用java等面向對象的語言,他們的重點不在速度不在效率。
但是實際上C語言只是在大家不熟悉的地方使用,比如windows和linux的內核,比如通信行業的流傳輸。這些基本上都是C語言在搞,因為java之中面向對象的語言無法滿足這些地方的效率,而只有C這類高效率的面向過程的語言才能滿足這類需求。
什麼是面向過程,通俗點講就是細節,一個人是由胳膊腿軀干頭組成的(java),血管和肌肉就是細節(c)。四肢的移動速度可以按秒計算,血液的流動怎麼按秒計算呢?
那為什麼C語言的效率高呢,最直接的表現就是指針。
你舉得例子a=b和*p=b是一樣的,這個沒問題,java一般都是a=b這么用,換算成指針就是*p=b。但是C語言大部分的賦值都不會考慮*p=b,為什麼,因為效率低,C語言一般是p=&b這么來寫,我不需要賦值,我只是搬運工,如果b這個結構體有1M這么大,那a=b相當於拷貝了1M的內存而p=&b只不過一個四位元組的內存操作而已,前者也許要耗費1ms,後者如果按位元組數來算的話 你可以想像效率提高了多少數量級。
更別說什麼回調函數啊,結構體里存指針比存整個結構體省內存啊之類的了。