所以說c語言指標存在的意義是什麼 是不是就是為了 (取內容)這一操作?

時間 2021-06-05 21:53:33

1樓:程虛元

1.當函式以資料的指標為引數時,在函式體內通過*(取內容)可以讀和寫該指標指向的變數內容(按你標題的意思我認為你是理解到這一點的)

2.可以是提高執行效率和節省記憶體

這一點的話就需要給你詳細講解一下函式傳引數的機制了。函式傳引數的時候是將引數複製乙份到記憶體的,這個複製乙份到記憶體的過程需要消耗CPU時間,也多占用了一部分記憶體。對於簡單的字元或者數值型別,即便複製乙份也就若干個位元組並不會對效能和記憶體造成多大影響,但是C語言裡面是有結構體的(struct),使用者自定義的結構體會占用多少位元組那就無法確定了(理論上沒有上限)。

假設我們不使用指標,那麼這個結構體作為引數在函式間傳遞的時候可能多次複製消耗了大量的CPU時間和占用了大量的記憶體。所以如果我們通過指標在函式間傳遞,指標占用的記憶體4個位元組,又恢復到普通字元和數值型別那樣的量級了,又可以忽略不計了。

所以指標的使用除了你理解到的*(取內容)之外,還可以提高執行效率和節省記憶體。

2樓:

題主的看法基本正確。

《深入理解計算機系統》之3.10「綜合:理解指標」這樣說:「指標……以一種統一方式,對不同資料結構中的元素產生引用」。

組合語言中直接定址、間接定址等方法使得資料的訪問極度高效靈活c語言的指標,部分實現了組合語言的定址靈活性C語言指標的「高效」,體現的是執行高效而非開發高效

為什麼說指標是 C 語言的精髓?

悽臨雨 指標 型別 虛擬記憶體位址值 整數 指標運算 根據型別確定的寬度對位址值進行修改。其中c語言裡的型別,比c 裡的型別的功能弱的多,所以你覺得c的精髓是指標,在c 裡就是個基礎操作,沒什麼大不了的。因為c語言的語言功能太貧瘠,所以只能靠記憶體位址的修改來做事,沒它就寸步難行。 Howard J...

C語言的指標是 ptr還是ptr?

舒默語 其實 並不是和 ptr 連在一起的,你可以寫 int ptr,左右兩邊的空格都是可以隨意的,所以 ptr 是指標,它儲存的值是乙個記憶體位址,但是 ptr 這個變數是指標變數,至於 就是取拿個記憶體位址裡的值。最重要的作用其實是和前面的 int 串在一起的,它表明了ptr這個位址上儲存的變數...

在 C 語言中指標的歷史是怎樣的?

Crazyjin 型別 變數和變數的值本來就是三個概念 一直都是三個概念。int是型別,int a 申明了乙個int型別的變數a。pointer是型別,pointer variable是pointer型別的變數。只不過這裡pointer和pointer variable沒有指明具體型別。這裡舉個具體...