1樓:紫葡萄
很多地方會用的,最簡單的乙個應用,函式多返回值問題
比如乙個函式要返回4個數,像go支援函式多返回值(其實底層也是用指標實現的)
在C中只能用C指標做,傳入4個指標,在函式內修改指標的值
2樓:小北
然後說用處不大,這是題主自己的理解吧,實際上工程裡根本離不開指標,這個展開講就太豐富了。等題主上過計算機組成原理或者微機原理,對記憶體有一定的概念以後會對指標的理解更為深入的。
3樓:JT蘿蔔頭
不是用地方少,只要你用不同角度看待問題,你會發現任何記憶體操作都離不開指標。指標無處不在。書本上對指標的說法是指標就是位址,這裡說的指標不是指標變數,概念要區分開。
例如:int a; 你可以理解為,把一段4個位元組記憶體的首位址命名為a。使用變數a時實際是使用指標。
4樓:「已登出」
用的很少?很可笑的說法,C語言首先是面向系統,對多數的埠訪問是通過指標實現的,怎麼叫用的很少?即使撇開系統層面,傳統應用層面,如影象解碼,傳遞乙個影象或音訊都是通過指標,怎麼叫用的很少?
幾乎所有的批量處理與塊操作都離不了指標,而且很多不是用陣列可以替代的。指標是C語言的靈魂,沒有指標很難說會有現在的C語言。建議先把微機原理或計算機體系學好,理解指標的真正含義,否則不要學C。
建議先把這本書仔細讀懂,再回過頭好好理解C
5樓:
老師說的都對,指標確實是c語言的靈魂,同時能不用盡量不用,這一點也不矛盾。因為,對於初學者來講,指標在沒有完全掌控之前,很容易用錯,不僅考試如此,實際工程也是如此,指標用錯的後果很嚴重,輕則記憶體洩漏,重則程式崩潰,而且指標bug也不好查。對於c語言高手來講,什麼時候能用或必須用指標,什麼時候不用也是心知肚明的。
乙個正式的c語言專案,肯定會有很多指標,不存在用的很少的情況。但是用指標也會很克制,不能濫用。而對於初學者,能不用盡量不用的意思是為了減少錯誤機率而已。
6樓:OhYee
畢竟考試都掛了老師會很尷尬,所以不考或者不要求你們用但是c用的還挺多的吧,要實現非引用傳參的地方基本上都是指標實現吧(比如要在c裡實現面對物件),以及陣列本身也是指標,只不過用封裝了下
【感謝 @CC仕
@IceBear
@暗夜幽靈 的指正。指標和陣列不等價,指標可以指向任何記憶體,這塊記憶體可以是陣列,也可以是乙個結構體或是任意內容。對指標而言它並不知道這塊記憶體是什麼,但是程式設計師在知道指標對應內容的情況下,可以將其當做乙個陣列、結構體或是其他型別操作。
這種操作帶來了很高的靈活性,也帶來了很大的隱患。可參考https://www.
指標應該是所有程式語言的靈魂,只不過別的語言可能封裝的比較好,讓使用者看不出來而已。(大家每天都在用,只不過自己沒意識到,應該不影響把它叫做靈魂吧)
7樓:emmm
c裡說到底只有乙個東西,就是指標。老濕之所以說盡量不用指標,是因為指標是把雙刃劍,用的666的人吊炸天,似懂非懂的人用起來可能會有各種莫名其妙的問題。
程式猿本來就只適合極少數人,如果老濕要求你們每個學c的人都要做程式猿,可能絕大多數都不能學c。
8樓:diaodiaoidaoidao
用處不大?
我們知道,在現在主流的高階語言當中,C是與底層最接近的,所以它提供的基本資料型別也比較「原始」,這就導致了它不能直接支援像其他語言那樣複雜一些的變數型別,例如可變長陣列,字串等。然而,這些資料型別又是非常常用的,所以,C提供了一種比較「原始」的方式,通過直接利用記憶體位址來運算元據,讓使用者自己實現各種高階的功能,自由度非常高。
別的語言沒有,那是因為它們封裝好了,不是沒有,而是不允許或者無需使用者直接操作指標。
9樓:皮卡丘黃了吧唧
不是的,你學到資料結構就能明白的。
學完C並不能做出什麼東西來,再學乙個資料結構你也做不出東西來。但是你想做出東西或者是要研究更深層次的演算法等等,資料結構是必須的!
建議把指標和離散數學的基礎打牢,學到鍊錶,棧,隊,樹,圖等等的時候會容易很多。
雖然我C用的不好,但是我覺得先學C並且強調指標的重要性是很正確的,你能把上面提到的知識理解的很透徹。
比如我用lua寫過遊戲裡的Brian(角色的AI),用到的就是資料結構裡面的樹。
10樓:康殼
用的很少你確定?c語言最沒法被其他語言取代的地方就在於指標了,這也是c的精髓所在。事實上我接觸的演算法的c檔案指標幾乎是無處不在,首先就是大部分函式都是在用指標傳遞,其次是很多語句直接在位址上操作要簡潔而且高效。
我不知道題主接觸的都是些什麼程式,反正對於我來說這個問題是不存在的。
11樓:DNFL
又刷到這個問題,補充一點,你現階段只是為了考試而已,把考試過了就行。
很簡單,沒有指標你怎麼記憶體管理,怎麼用堆空間,這是很現實的。當然,指標實現了對位址的基本抽象,使用位址也可以達到同樣效果。在其他高階語言中,對指標進行進一步的抽象封裝,搞出來引用,然後這些東西本質都一回事。
另外陣列只是個編碼期的概念,一編譯就沒了,這是為啥,陣列做實參,就變指標了。
12樓:
不用指標?
你學C語言寫的乙個程式,printf(「hello world「),這句話裡面都用到了指標。
幾乎不用?你不知道用了罷了,應該說幾乎見不到不用指標的地方,包括陣列都是常常配合指標使用的。
13樓:在ios寫bug的傑克
C語言的靈魂—指標
指標是什麼
在電腦科學中,指標(Pointer)是程式語言中的乙個物件,利用位址,它的值直接指向(points to)存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需的變數單元,可以說,位址指向該變數單元。因此,將位址形象化的稱為「指標」。
總結來說,指標就是指向位址的變數!
指標的作用
c語言指標可以有效地表示複雜的資料結構、動態分配記憶體、高效地使用陣列和字串、使得呼叫函式時得到多個返回值等。指標的應用往往與陣列聯絡在一起,是最頻繁的,也是最基礎的。引數傳遞時只需要拷貝位址值,提高程式的執行效率。
有效的表示資料結構,能動態分配記憶體。
指標指標的語法
指標變數的定義: 型別 * 指標變數名 &:表示取位址操作 *: 表示取位址中的值
怎麼去理解指標
大家可能一時半會可能很難理解指標含義。我們的計算機都會有乙個記憶體,並且這個記憶體的每乙個部分有乙個標記表示它的位置,這個標識就是我們的位址,位址對應的區域存放的就是我們的資料(值)。就像我們住酒店,酒店是記憶體,門牌號是我們的位址,住在房間裡的人就是我們的資料!
14樓:ZA139
現代計算機基本上一切操作實質上都是使用CPU控制記憶體。指標賦予你「直接」操作記憶體的能力,這也是C語言的精髓。操作記憶體更加貼近計算機的本質。
因為任何與語言最終要翻譯為目標機器語言才能執行,機器語言就是對記憶體的一系列操作。
所以C語言相較於其他語言的優勢就是他更加貼近底層,簡潔高效是它最大的優點。
但是賦予程式設計師直接操作記憶體的許可權,也就代表了對於普通程式設計師,出錯的概率會提高,而且後果也較為嚴重。這也就是為什麼你們老師要求你們少使用指標,因為你們作為剛入學的學生,大部分人剛剛入門,隨著之後對於計算機底層的深度學習和理解,也就可以大膽使用了
15樓:青陽惗一
因為希望同學們過個好年呀,不然考指標,別說大一,就算學到大四學四年,往深了考,也能給你們全考掛掉。開個玩笑。如果是軟工,電腦科學類專業的學生,之後肯定要學資料結構,全是指標,有的是地方考,C不急。
指標作為C的一部分,C是一本書,指標可以單獨再出本書,要一起考,得讓你們考兩張卷子
在大一的話,那肯定是上學期,所以先學C,這是基礎,學了C才能學別的,等到下學期要是軟工這類專業的肯定就要學資料結構,簡單粗暴的說,資料結構整本書都是指標串起來的。
而資料結構的重要性於C語言,猶如血液對於人。
16樓:張逸群
我認為c語言的靈魂確實是指標。至於指標能不用就不用這句話我認為更傾向於一種考試策略,指標由於較為抽象,容易出錯,在不熟練的時候且答案不唯一且要求最終分數的考試中,給出能不用指標就不用指標的策略很正常。
指標的力量在資料結構中會展現出一部分,慢慢來。
17樓:暗夜幽靈
你覺得用的很少是因為考試故意這樣的,因為這樣的話成績能好看不少,換句話說老師教的是考試專用版本c語言。
換到真正的c專案,指標結構體滿天飛。絕大多數函式的參表裡都能看到指標,而且常用的資料結構也都是依賴指標實現的。
18樓:雪凰
因為幾乎任何需要一些高階抽象/設計模式的地方,都依賴於指標。
策略模式需要函式指標來指定「策略」;
要實現一些類似oop多型的性質,也需要指標;
動態記憶體管理,依賴於指標;
大部分鍊錶/樹等動態的資料結構的實現,依賴於指標;
這也是用c語言幹活很難的原因,語言本身幾乎不提供任何高階特性,只提供了實現這些特性的工具——指標。
指標只是c語言語法裡很小的一部分,但是卻是更廣闊的世界的門鑰匙。前半句話是考試可以不用指標的原因,後半句是指標是c語言的靈魂的原因。
為什麼說指標是 C 語言的精髓?
悽臨雨 指標 型別 虛擬記憶體位址值 整數 指標運算 根據型別確定的寬度對位址值進行修改。其中c語言裡的型別,比c 裡的型別的功能弱的多,所以你覺得c的精髓是指標,在c 裡就是個基礎操作,沒什麼大不了的。因為c語言的語言功能太貧瘠,所以只能靠記憶體位址的修改來做事,沒它就寸步難行。 Howard J...
c語言指標內容為什麼無故改變
暮無井見鈴 return 語句返回 name 所隱式轉換而得的指向 name 首元素 name 0 的指標。從 main2 退出的時候,其中 name 物件的儲存期和生存期就結束了。語義上我們可以認為這次呼叫中為 name 分配的儲存在退出函式後就是沒了。從而這個指標值變成懸垂了,通過該指標值解引用...
(C語言)位址為什麼要變成指標才能賦值給指標變數呢?
szouc C語言中所有資料都具有兩個屬性,乙個是值,另外乙個是型別。即使值相同如果型別不一致也是不同的資料。有一道題 小區內有乙隻狗叫Oscar,有乙隻貓也叫Oscar,大晚上有人喊 Oscar 請問他找誰?Oscar 找我幹嘛?位址是乙個整型資料,而指標具有 指向物件型別的指標 的型別。因此即使...