C語言的指標是不是像我理解的這樣?

時間 2021-05-13 03:40:04

1樓:C語言答疑課堂

對C語言指標的理解,一萬個人有一萬種理解法,題主的這個理解也是有道理的。我對C語言指標也有自己的理解,甭管是基本資料型別的指標,還是陣列指標,還是函式指標,還是結構體指標,都離不開兩個字:「己他」,說白了,我覺得只要理解了C語言指標的「己他」概念,你會發現C語言指標是個紙老虎!

指標的「己他」概念又包含了「己X」和「他X」概念,詳細如下:

「己X」概念包含了「己址」、「己值」、「己型」。

1、「己型」:任何一種指標都有自己的型別;

3、「己值」:任何一種指標變數都有自己的值;

「他X」概念包含了「他址」、「他值」、「他型」。

1、「他型」:任何一種指標變數都有他人的型別,這是讓你覺得指標難的乙個地方;

3、「他值」:任何一種指標變數都有他人的值,這個概念非常容易跟「己值」混淆,這是讓你覺得指標難的第三個地方;

我在我的專欄: C語言指標是個紙老虎 對上述概念有詳細的闡述,有興趣的小夥伴可以看看。其實你了解了指標的「己他」概念,你也許會跟我一樣覺得C語言指標真的是個紙老虎!

2樓:Fortuna丶i

哈哈!只是因為題主打這個比方太搞笑了,這個東西呢,就把它想象成放風箏一樣,風箏和線的關係。用的多了,你就理解了,再多說也沒用,就像你後邊還要學的遞迴,剛開始難理解,學的多了用的多了,就理解了。

不必糾結於這個問題哈

3樓:void

對於資料而言,都有存放它的地方,這個地方對於程式而言就是記憶體,作業系統遮蔽了快取、記憶體、硬碟等存放資料的地方,給程式設計師提供的是乙個統一的記憶體塊,程式設計師可以利用這塊記憶體做程式設計工作

變數其實就是乙個符號,他是記憶體上乙個位址的別名,你可以在c語言中操作某個變數名,就表示操作對應位址編號的記憶體上的資料,類似你理解的貨櫃的概念

指標也是乙個變數,它也是某段記憶體位址的符號表示,你也可以直接使用這個符號像其它變數一樣,不過它裡面的值是乙個位址編號,當然你還可以用*來使用指標,表示要操作的是(指標裡面的值)這個位址裡面的資料,就是先取出指標裡的值,再把這個值當成乙個位址,去取這個位址裡的值;當然有些位址裡的值,是不允許你去取和改變的,以免導致程式或記憶體錯誤,所以編譯器和語言會對指標有很多使用要求

最後,如果要真正理解指標,建議看下組合語言從實模式到保護模式這本書,大概乙個月,能簡單使用組合語言了,對指標的理解會非常透徹

c語言的變數和指標,怎麼理解?

zhonyong 自問自答 c語言的變數,比如如果有下面的語句 char c a 這裡定義了char型別的變數c,分配了乙個位元組的儲存空間,並且賦初值為 a 再來看 int a 這條語句定義了乙個沒有賦初值的int型變數a,在32位cpu上,即是分配了4個位元組的儲存空間。因為沒有賦初值,所以4個...

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

程虛元 1.當函式以資料的指標為引數時,在函式體內通過 取內容 可以讀和寫該指標指向的變數內容 按你標題的意思我認為你是理解到這一點的 2.可以是提高執行效率和節省記憶體 這一點的話就需要給你詳細講解一下函式傳引數的機制了。函式傳引數的時候是將引數複製乙份到記憶體的,這個複製乙份到記憶體的過程需要消...

C語言指標與二級指標的問題?

已登出 列印不出來是因為這條語句將嘗試訪問非法 程式不該訪問 的記憶體。printf s pt 嘗試訪問超出劃定範圍的記憶體空間,被作業系統攔下 答主重現了一下,那麼從下圖可以看出,p和pt的位址是0x00affb6c,abc 的首位址是0x00de6b30 那麼解引用pt得到的是0x00de6b3...