首頁>Club>
5
回覆列表
  • 1 # CrazyJin1988

    首先,指標就是記憶體地址。而記憶體地址計算機中自然存在的東西,所以不存在c語言引進指標這種說法。

    那其它語言中沒有指標呢?那是因為在這些語言中指標被抽象了、遮蔽了計算機硬體相關的概念,比如Java、C#。這使得這些語言更安全、更容易使用。但同時也使得這些語言丟失了直接操作硬體的便利。

    C語言之所以保留指標,是為了它滿足它的設計需求:重寫unix作業系統。而作業系統是需要直接操作硬體的,同時也需要程式直接反映記憶體或暫存器中的資料。這使得c語言直觀並且高效,非常適合編寫底層的、高效的程式。

  • 2 # 日衝資訊 黃

    幾乎所有的程式語言都需要對記憶體地址進行操作,只不過C語言是顯式,其他語言是隱式的。可以從機械運算的原理和實際的應用方法兩個方面來理解這個問題。

    被隱藏了的指標

    在C#中,用ByRef關鍵字定義指標,而用ByVal關鍵字定義值。而Java則刻意隱藏了指標的概念。但下面這個例子中還是漏出了馬腳:

    String str=“Hello”;

    String ptr=new String(“Hello”);

    第一行中的變數是值,用它傳參相當於複製了自己也就是值傳遞。而第二行的引數是一個指標,用它傳參雖然也會複製自己,但是由於它是字串的首地址,相當於引用傳遞。如果你留意一下幾乎每種語言裡都能找到指標的影子。能完全無視指標的語言大概只有SQL吧。這種語言是迄今為止最高階的語言,有人把它稱為第五代語言。

  • 3 # 老成Mrcheng

    所有語言都有指標,只不過其他語言不給你操作罷了。

    指標就是記憶體地址,c語言操作起來最直接,所以如果面對沒有指標的語言程式設計時,你不知道指標的概念,會碰到許多坑,舉個例子。

    javascript,定義一個變數

    var a=123;

    function s(m){m=456;}

    s(a);

    console.log(a);

    結果很簡單,肯定是123。

    但是這樣呢?

    var a={i:123};

    function s(m){m.i=456;}

    s(a);

    console.log(a.i);

    如果你沒有指標的概念,你是不能理解兩者之間的區別,所以不是隻有c語言才有指標的。

  • 中秋節和大豐收的關聯?
  • 兒時做的夢,長大後竟然變成現實,哪位朋友有這個經歷?