為什麼有人討厭指標?

時間 2021-05-05 14:38:50

1樓:Mimosa

指標太象「農民工」,在底層、勤勤懇懇幹髒活、為現代化城市、為社會做極大貢獻,卻老是被一些人討厭!這是"農民工"問題、還是討厭「農民工」的人的問題?

指標更象一匹「千里馬」,如果你沒有能力訓服它,讓它成為脫韁的「Mustang」,你應該「怒己不爭」,而不是討厭它!

指標是所有程式的靈魂、是生命線,無處不在,需要了解它、熟悉它,不要僅僅陶醉於沒有指標的程式設計,當有一天大家都不知道指標為何物時,其情景與現在的晶元斷供要可怕得多!這不危言聳聽。

2樓:蘇三那麼甜的嗓音

當然是因為用起來不舒服了,C語言這種東西還是根據人家國外的語言習慣來制定的指標,在我們漢語的邏輯裡面,其實用起來並沒有那麼方便。

3樓:Nuuuu

剛刷題時*,->這種啥時用,包括返回的為啥型別一會兒是指標,一會兒不是搞得很煩。

後來老鐵推薦了我本"C和指標",看完整明白就沒啥喜歡不喜歡的了。 刷題至少不會卡在指標上

4樓:龍貓貓

在應用開發來說,指標還是太原始了,就像用牙籤吃飯一樣,還容易用錯。

當然寫有些庫或者是系統程式設計就難免了,因為只能用這玩意,大佬的腦容量也hold住。

5樓:

據我的經驗,這是不理解指標的硬體原理導致的。

我一開始用譚浩強的那本書,指標這塊學得我欲仙欲死。

實際上我認為所有C語言書,最開始都應該結合實際地講一些計算機硬體層面的知識。並在之後的章節中穿插地輔助學習理解。

6樓:

這就好比先讓你學配鑰匙,配了一學期甚至一年才開始教你房子的結構。房子是有門的,用鑰匙可以開門。

如果先學了記憶體和計算機組成,大家很自然就會想到怎麼操作記憶體。這時候再教指標的思路,我相信大家都會覺得這是天才設計。

計算機本科既然已經被噴沒用的課太多,那還不如索性就讓大家由低到高領略每一次計算機技術進步的天才之處。閘電路,狀態機,馮諾依曼機。二進位制指令,彙編,C,C++。

移位寄存,串列埠通訊,通訊協議,tcp/ip。

強烈建議從數電學起

7樓:量體裁衣

這是因為有些人喜歡偷懶,不想深入去研究透過現象去理解本質。指標就是位址變數,當你開發第一款作業系統的時候,就知道它到底多有用,因為你碰到第一東西就是位址。況且這個位址值是固定的,從這裡開始你就已經在理解位址了。

建議去深入了解編譯器的原理,以及它們是怎麼做出來的,事物的發展沒有這麼一帆風順,你必須通過先人的腳步一步一步走過來,所有的東西都是為了解決問題而生,東西較多,這裡就不及時說了,這就相當於你吃雞蛋,燒雞,雞腿的時候,從來不去研究它為什麼吃了能夠不餓,以及它是怎麼來的,世界上第一隻雞怎麼來的,以及是先有雞還是先有蛋的問題,你吃就行了,研究這個意義不大。

8樓:茫然的哈士奇

我最討厭指標的寫法!

要是讓我來修改c的話,我就把指標命名為「位址型別」,這樣別人一看就知道它是個資料型別,就和int型別,char型別一樣了。然後再根據位址存放的資料型別又分為int位址型別,char位址型別……

再定義星號操作符為取值的意思(若星號前後都有變數則為乘法符號),星號後跟乙個位址變數,意思為找到這個位址,讀這個位址的值。&號還是和以前一樣是取位址。

然後*int a, b, c;這樣來定義,這就和其他資料型別的定義一樣了。*int表示乙個資料型別,a,b,c都是這個型別的變數,這個型別就是int位址型別。

這樣不就灰常好理解嗎?為什麼c要搞出那種奇奇怪怪的東西?

讓我來把這種新式C命名為Tiger C吧!

// 這不是C!別誤導了你

#include

void add(*int n)

int main()

9樓:宇智波-老爺

因為指標和陣列的型別標識長得不一樣 , 語法也有些奇奇怪怪吧 , 然後巢狀之後就變得非常不直觀了 , 容易勸退新手(我也是新手)

* , 看成和int, long 一樣是型別識別符號事情就簡單了 , 雖然他們長得不太一樣,

通過一些例子從簡單到複雜一步步分析就不難了// 基本型別 int 變數定義 ,

// 非常直觀的type name形式

inta

;///* a 是乙個陣列

陣列的定義, 有點不一樣 ,

不再是 type name 這種形式

``放在名稱的右邊, 前面的int

只表示陣列元素的型別

所以陣列變數的定義需要兩個型別標識,

分別放在變數名稱的左右邊兩邊*/

inta[10

];/* '*'表明 p1是乙個指標,

int是指向的資料的型別

指標變數定義也需要兩個型別 ,

他們都放在變數名稱的左邊*/

int*p1;

/* 這個定義看上去有點複雜 ,

不過只需要回答乙個基本的問題

就能把握住關鍵: b是什麼型別? 答數是陣列因為陣列變數名的兩邊分別是元素型別和'' ,所以b是指標陣列 , 而指標需要在星號左邊給出指向的型別,即 char所以 b是字串陣列*/char*b

[10];/* 同樣的先回答那個基本的問題: p2是什麼型別?

答案是指標,因為這裡加了乙個括號,

括號的優先順序是最高的所以 p2是

指向int陣列的指標*/

int(*p2

)[10

];/*那麼pf 是什麼? 答案是指標 ,指向的型別是什麼? 函式

函式指標的定義是把 (*變數名) 放在函式的引數和返回值中間*/int(*pf

)(int

,int

);// 這是乙個函式的宣告 , 不是變數定義int*

pufnc

(int

,int

);再來一些複雜的變數宣告的分析

/**括號的優先順序最高 , 所以先看第乙個括號裡變數名左右兩邊同時出現* 和 ,

這很明顯是乙個陣列的定義 ,

* 號表示陣列元素的型別 , 所以c是乙個指標陣列,陣列的元素是指標,而指標需要給出

指向資料的型別的宣告即: char ... (int **p) ,所以c是乙個指標陣列 , 陣列裡的元素指向函式*/char*(

*c[10

])(int**p

);再看這個

int(*(

*(*pfunc

)(int

*))[

5])(

int*

);/*

最裡面的(*pfunc) 表明它就是乙個指標,指向的型別是:* ... (int *)乙個函式而函式的返回值也是乙個指標 ,

指標當然得宣告指向的型別,即: * [5] ,這是乙個裝著指標的陣列,陣列裡裝著指標 ,所以還需要給出陣列裡的指標指向的型別

即: int ... (int *) 是乙個函式總結起來就是:

pfunc是乙個指標,

pfunc是乙個函式指標,

pfunc是乙個返回值是指標陣列的函式的指標,pfunc是乙個返回值是元素指向函式的指標陣列的的函式的指標 */

10樓:北京路

C語言本質上是「通用組合語言」,說白了就是封裝後好記好用的組合語言,所以裡面有些東西如果不結合計算機結構最小系統硬體層面就很難講清楚。

將c作為第一門語言課程,其實是很不明智的。應該在數位電路課程加一章設計個最簡單的cpu,然後再學c語言。

11樓:矽基生物

我懷疑根本沒有一本漢語為主的書或者文章講清楚指標。別扯什麼基礎,我從閘電路學起,照樣理解不了。

別扯淡什麼效率高,不就是直接操作記憶體嗎?好像只有你理解二進位制似的。

晚上我找個類裡面的指標。

12樓:TAO的小狼崽

指標?指標不討厭啊,你去看看指向指標的指標,指標位址,位址指標混一起看看**&*,到底是傳*呢還是傳**呢還是傳&呢

13樓:悽臨雨

要是我來編教程

首先函式傳參,需要用到陣列的,先教用陣列引用傳遞void f( int (&arr)[10] );

然後用陣列實現各種演算法

最後告訴學者,把程序記憶體空間,從0開始平坦地視為乙個陣列,就是指標了,只不過指標實際儲存值是乘以元素寬度的。

至於指標的定義格式語法,抱歉那根本無所謂,強行記下就行了。

14樓:light0x00

表面上看,好像是因為沒學好c/c++這類被編譯器加工過的的高階語言語法。而實際上,是記憶體編址與定址沒學好,這涉及兩門課:計算機組成和組合語言。

15樓:趙一凡

對於討厭指標的人,推薦乙個遊戲。

《human resource machine》

這個讓我乙個巨討厭程式設計的人,以最簡單的方式理解了指標。

16樓:CHAN.K

因為教材講的方式太過於理論...

如果我給別人講指標,我會從符號的角度去講

比如int *f (int a,int *f2(int b,int *f3(int c,int d)),int e);

這句如果求f的型別,就從符號的角度來看,「去掉所有變數,剩下的就是型別」。那麼就有f的型別為:

int * (int ,int *(int ,int *(int ,int )),int );

編譯器本身肯定是沒有那麼智慧型的,它們自己只能通過符號來判斷型別。

17樓:

是國內大學教學順序錯誤造成的

在大一學生啥也不懂的時候的時候,既沒有自頂向下從需求應用教起(用簡單的語言解決問題,比如拿Python寫個排列組合計算器,統計課就能用上),也沒有自底向上先教計算機組成原理、指令彙編等,而是選了個從半中間教C++這麼個(在教學方面)高不成低不就的縫合怪,結果就是沒有其他理論知識儲備的大一新生一臉懵逼,然後在無數的段錯誤中抓狂,最後在大三學完計算機組成原理後怎麼才真正弄明白這玩意的來龍去脈,學完作業系統課之後才知道為啥出段錯誤,不被討厭就有鬼了。

18樓:

各種資料、教材,把指標都妖魔化了,久而久之就搞得人們對這東西的感覺都變得神神叨叨的。

這種事情上,你們都是各種媒介的受害者。

指標就只是乙個很純粹的概念,乙個工具,核心就是乙個位址。

它甚至不是計算機這個系統本身的什麼特性,就像你們為了描述幾個東西跟另幾個可相同的東西放一起產生的一些變化,而產生了「加法」這個概念。

類似的,url 就是乙個網路世界的指標

19樓:懵哥

打比賽的時候要是因為乙個指標亂指搞得RE乙個小時,就算調好了,那也算是可以直接打鐵回家了,而乙個正常演算法如果不避諱指標可以指出上十萬根指標。

20樓:

說點個人看法。

討厭是因為指標確實很麻煩,但是也談不上難,只要多用再怎麼複雜也會熟悉的。

不過個人認為去除指標的應用其實極其必要的。

原因就是其實指標的用法是基於非常具體的實現————計算機執行的具體的實現方式。

從軟體開發的角度講,如果我使用指標,無疑會讓我的程式,依賴於這種指標的實現方式。

無論如何,實際上你需要的乙個類似智慧型指標的玩意。那個玩意就代表著你要操作的物體,這個操作無疑是抽象的,指標則賦予了一種輕易打破這種很本質抽象的能力。

所以結果就是,你必須要謹慎的使用著指標,所以人們才會寫智慧型指標,因為智慧型指標是更接近我們想要的東西的抽象。

為什麼有人討厭鄭爽?

我真的很討厭她,幹一行愛一行,不需要磨練演技就能得到一切,是對所有在這個行業裡努力的人最大的侮辱,也嚴重影響了演員行業的形象。她的懈怠,自我,沒有專業精神,沒有同理心,她在生活中這樣我們無權評頭論足,但是你作為公眾人物,宣揚這種所謂放飛自我的精神,對於現在的青少年,正在樹立三觀的階段,我認為不是好事...

為什麼有人討厭妙玉?

沒有傑瑞的湯姆 我也討厭。為什麼討厭?因為大部分人都把自己帶入到劉姥姥的身份中。一般人 無貶低意思。反倒是這樣,倒也襯出了妙玉過於清高的人物性格。 the secret 對妙玉的感覺算不上討厭,但確實不喜歡,試著答一波。我覺得妙玉招人討厭的根本原因,大概就是她 過潔世同嫌 可偏偏又 欲潔何曾潔 一方...

為什麼會有人討厭灰原哀?

碳水化合物姬 為什麼不喜歡 看這個問題底下的空瓶就知道了 nc灰原粉多牛啊 手動狗頭 路轉黑有原因的 部分 灰原粉太跳了,是不是喔 彈幕空瓶,知乎空瓶,貼吧還空瓶 灰原對我來說就是路人,女配都算不上,感情摻合不進去主線也慢慢淡出,好慘噗 不算討厭,但我無法接受灰原哀可以對著柯南叫工藤,而小蘭對著柯南...