c語言為什麼會有指標?c語言為什麼要有指標呢?

2023-03-09 00:20:07 字數 2908 閱讀 3145

1樓:匿名使用者

指標是c中的精髓,如果沒有,應該說就是一種很平庸的語言,從本質上說,指標體現了von neumann體系結構計算機也就是當今計算機的特徵,記憶體資料按照當前的解釋決定其意義,其指標的運算更是以機器實現的方式展現出來。

具體的主要原因大致如下:

1、函式的引數傳遞:c語言只有傳值這樣一種方式,在函式體內不能作用到外部,通過傳遞指標的值可以間接轉彎來改變外部的變數的值。

3、連續記憶體訪問:其配套的指標算術運算相比大多數語言的陣列訪問而言要佔用機器週期少一些,因為可以直接使用機器指令來完成。

其他還有一些原因,可以參看一些深入的外版書籍。

2樓:

問發明者。當然,底層東西,用指標更方便。

c語言指標問題

3樓:聽不清啊

這個圖中的第378行語句,在不同的編譯系統中,可能會有不同的解釋。所以一般在容易引起歧義的情況下,最好不要採用這種寫法,在這裡,他是先進行後面的自加操作的結果。

4樓:帳號已登出

專題講解c語言指標,幫助你在短時間內掌握指標的各種玩法。指標是c語言的難點,也是c語言的重點,玩不轉指標,學習c語言就沒有意義。

c語言為什麼要有指標呢?

5樓:網友

因為指標通過地址傳遞引數,如果不用指標傳送速度慢。

在沒有c++語言的年代,沒有物件導向、模板的語法支援,struct中還不能定義函式,用c語言想要對業務功能(演算法,此處即指函式)進行抽象,不想依賴具體的資料結構/資料型別,此時就必須用指向函式的指標來實現抽象與具體的分離,該函式的入參可以是void*,這樣呼叫者就可以傳入任意型別的引數了。後來有了c++,就用類成員函式和泛型(模板+functor)來代替了,這樣做有更強的靜態型別檢查機制和程式設計約束,有利於減少濫用風險。

函式指標的一個典型應用場合是實現**,因為此時還不知道具體函式定義,事件發生時才呼叫、才確定;類比於物件導向中的「多型」+設計模式中的「觀察者模式」,**的實質仍然是抽象。

6樓:逸_公子

很多情況可以用到。這需要在程式設計過程中形成一種思維。

如 將一個結構體傳遞給一個函式。

如果不用指標,傳送速度慢,如果通過指標,只要傳遞一個地址。

struct example

;void main()

fun(struct example *p)

7樓:匿名使用者

指標通過地址傳遞引數,可以雙向傳遞值。

如果你是計算機專業的學生,看《高階語言程式設計》裡面有詳細介紹二者的區別,也有程式對比(兩數交換的函式)。我比較懶,你就靠自己了。

c語言中指標是什麼

8樓:it小敏同學

我們都知道:c語言中的陣列是指 一類 型別,陣列具體區分為 int 型別陣列,double型別陣列,char陣列 等等。同樣指標 這個概念也泛指 一類。

資料型別,int指標型別,double指標型別,char指標型別等等。

通常,我們用int型別儲存一些整型的資料,如 int num = 97 , 我們也會用char來儲存字元: char ch = a'。

9樓:匿名使用者

把儲存著地址的變數叫做指標。

關於c語言指標的一個問題?

10樓:格里程式設計辦公技巧

這裡&p的地址是不會變的,不是列印不出來是沒到列印那個語句程式已經崩潰退出了。

圖中1處指標p沒有初始化,它沒有指向任何記憶體單元不能進行圖中2處的賦值寫入操作,這裡會程式崩潰退出。

c語言中指標是什麼?

11樓:養雅韻翠風

指標是c語言的難點,很難被學生接受。本部分主要演示:指標的定義,普通變數的定義,建立關聯,直接賦值,間接賦值。為了簡便,暫時只討論整形。

設計:在組合框中選擇操作的型別,在彈出的對話方塊中做進一步的處理。二十個模擬記憶體,十個為整形,十個為指標區。

由於「記憶體」的限制,很容易「記憶體不足」。二十個靜態控制元件顯示變數名及模擬記憶體地址。

整形陣列記錄數值,字串陣列記錄變數名,注意對應。

定義:加上變數名,並隨機賦初值。

關聯:在對話方塊的組合框中選擇變數,前有提示資訊"=&改變指標的值,並將相應的框連線。

賦值:在個對話方塊中選擇整形變數或指標變數,並輸入值。

有必要的話,將cedit改成crichedit,用setsel反向顯示正在處理的模擬空間。

測試:1,注意空懣狀態。

2,多次重複同一操作。

12樓:姓從蓉秘素

指標就是另一個變數在記憶體中的地址引數,它也佔用記憶體空間,裡面放的是另一個記憶體地址。

13樓:針迎秋藍曲

c語言的指標很難學,指標是一個變數,如果指標*p,p就是地址哦,*p是變數。

14樓:睢俊能析彬

1.指標就是1個變數,他也是一個存放內容的記憶體空間。

2.指標存放的內容是另一個記憶體空間的起始地址。不同於一般變數存放的就是變數值。

3.取值操作符*對於指標的作用是取得指標變數存放的記憶體地址裡面的值,不加*取出的是指標變數存放的值(就是一個記憶體地址)

上面3步,step

bystep

你就理解了。

c語言指標陣列如何存放函式地址C語言指標陣列如何存放函式地址

c c 的指標的靈活,常把許多初學者搞暈,連高手也是如此。1.當然,可以呀,一切資料都可返回 2.複合指標型別直接表示非常麻煩 連高手都是這樣 可以分解成多個簡單型別 typedef void funtype void funtype num 100 分解後簡單多了!3.因為函式名不是字串,初始化時...

C語言檔案指標,C語言中通過檔案指標訪問檔案有什麼好處?

你還沒解決嗎?你的bug應該不是檔案方式的問題。我才起來給你除錯,應該是 這一句的問題 fp1是檔案指標,fopen s函式返回的值型別是errno t 也就是int型別的值,因fp1錯誤的使用,而接受了fopen s函式的返回值,此時fp1指標的值變成0x0000000d fopen s函式的返回...

const指標c語言

const 只對它申明的變數負責,且只是在編譯時檢查,當你把它強制型別轉換了就能修改它 你這個編譯器有點老,新的編譯器在 int b a 就出錯了,原因是這裡有個從const int 到int 的隱式轉型。另,c語言的指標很靈活,但使用它需要特別注意安全,像這樣的做法也能直接把a改了 const i...