0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么C語言要引入指針_引入指針的好處是什么

C語言編程基礎(chǔ) ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師陳翠 ? 2018-07-28 10:12 ? 次閱讀

前言

說起指針?biāo)闶莻€ 在 CC++ 中老生長談的話題,但是今天我從另外一個角度給各位看官分析一下為什么非要引入指針這個讓人看到都頭疼的東西? 想必學(xué)過指針的都被它的各種繁瑣所折磨,另一種角度講就是被他的靈活易用所征服。不知道大家學(xué)習(xí)過只要是帶指針的地方,都可用使用非指針的東西去表達(dá)出來(你愿意的話),甚至比用指針看著還簡便,所以問題也來了,為什么要引入指針呢?好處何在?

正文

在說為什么引入指針這個問題前先帶大家了解一下什么是指針?

指針最為簡短的定義:指針即為內(nèi)存的地址。 那什么是內(nèi)存呢?舉個栗子當(dāng)我們計(jì)算 4*(46+4)時,我們?nèi)四X會想到先有個中間值 50 然后再計(jì)算成 200,計(jì)算機(jī)也會這樣有一個 50 的中間值,我們?nèi)四X在計(jì)算的時候50 這個中間值保存在我們的萬能的腦子中,計(jì)算機(jī)在出現(xiàn)最終答案前也會把這個中間值一個方便它進(jìn)行下一步計(jì)算的地方,這地方就是內(nèi)存,實(shí)際上我們寫程序的時候定義的所有變量都保存在內(nèi)存中,可以想象一個大的程序所占用的內(nèi)存是不容小覷的,在計(jì)算機(jī)剛被制造出來的時候那些大佬是如何節(jié)省每一個字符的。至今內(nèi)存的占用是每一個合格的程序員所需要注意的事情,至此我們得出一個結(jié)論:寫程序需要盡可能少的內(nèi)存。

那么內(nèi)存的地址又是什么呢?這個說來話長,不了解的可以到網(wǎng)上和書上查看一下,每個地方都會有很多敘述。假如我們定義了char a=’A’,當(dāng)需要使用這個‘A’時,除了直接調(diào)用變量a,另一種方式就是調(diào)用a的地址,即指向a的指針p(假設(shè)定義了char *p=&a)。這里請思考一個問題:究竟是a占用的內(nèi)存大呢還是p占用的內(nèi)存大,a顯然只占了一個字節(jié)(char類型),p呢?p 占用了 4 個字節(jié)。既然p中存儲的是a的地址,也就是說這個問題實(shí)際演變?yōu)榱藘?nèi)存的地址需要多少位(bit)來編碼。再假如我們定義的char a1[30]="C語言程序設(shè)計(jì)能夠讓你成為優(yōu)秀的程序員"占用 30 個字節(jié),也有一個char *p1=a1 這個時候 a1占用 30 個字節(jié)而 p1 占用4個字節(jié)(字符串地址 = 首字符地址)。 那么假如你要引用的是一個 5G 的東西(這個應(yīng)該是CPU總線的地址不懂的暫時叫這個東西)用指針也還是 4 個字節(jié)即可。由此我們得出結(jié)論:使用指針型變量在很多時候占用更小的內(nèi)存空間。

明白了引入指針的好處,我們再來看一個例子,第一節(jié)課是1班語文,2班數(shù)學(xué),第二節(jié)課顛倒過來,1班要上數(shù)學(xué),2班要上語文,那么第一節(jié)課下課后需要怎樣作調(diào)整呢?方案一:課間1班學(xué)生全都去2班,2班學(xué)生全都來1班,當(dāng)然,走的時候要攜帶上書本、筆紙、零食……場面一片狼藉;方案二:兩位老師課間互換教室。怎樣,有沒有發(fā)現(xiàn)這個例子很像一道題目“請交換變量a和變量b的值”,現(xiàn)在,大家知道怎么做是最優(yōu)解了么?

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134008
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    475

    瀏覽量

    70457

原文標(biāo)題:經(jīng)驗(yàn) | 一文了解 C語言 為什么要引入指針?

文章出處:【微信號:xx-cyy,微信公眾號:C語言編程基礎(chǔ)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    為什么C語言避免使用Null指針

    為什么C語言避免使用Null指針呢?指針作為數(shù)組的應(yīng)用有哪些呢?
    發(fā)表于 12-20 07:19

    C語言入門教程-指針

    指針C語言中,指針被廣泛使用。所以要想完整地掌握C語言,您需要對
    發(fā)表于 07-29 11:30 ?634次閱讀

    C語言指針電子教程

    本資料是一份不錯的關(guān)于C語言指針的電子教程,希望對大家有所幫助... 指針簡介 指針C
    發(fā)表于 07-30 16:00 ?77次下載

    C語言指針函數(shù)和函數(shù)指針詳細(xì)介紹

    C語言指針函數(shù)和函數(shù)指針詳細(xì)介紹。。。。。。。
    發(fā)表于 03-04 15:27 ?5次下載

    c語言函數(shù)指針定義,指針函數(shù)和函數(shù)指針的區(qū)別

     往往,我們一提到指針函數(shù)和函數(shù)指針的時候,就有很多人弄不懂。下面就由小編詳細(xì)為大家介紹C語言中函數(shù)指針
    發(fā)表于 11-16 15:18 ?3551次閱讀

    C語言的精髓——指針詳解

    C語言的精髓——指針詳解
    發(fā)表于 11-30 14:43 ?17次下載

    簡述C語言中什么是懸空指針和野指針

    提起C語言大部分開發(fā)者很自然就會想到指針二字,沒錯,作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是指針中的兩個特有名詞
    的頭像 發(fā)表于 03-18 11:18 ?2323次閱讀

    指針才是C語言的精髓

    文章目錄前言一、pandas是什么?二、使用步驟1.引入庫2.讀入數(shù)據(jù)總結(jié)前言指針對于很多初學(xué)C語言的人來說是一個十分復(fù)雜比較抽象的知識,今天就帶大家一起來揭開
    發(fā)表于 12-09 13:06 ?14次下載
    <b class='flag-5'>指針</b>才是<b class='flag-5'>C</b><b class='flag-5'>語言</b>的精髓

    C語言指針的理解使用

    C語言指針的理解使用指針變量的聲明給普通變量的賦值對比給指針變量的賦值代*的指針的使用說明
    發(fā)表于 01-13 13:42 ?3次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>指針</b>的理解使用

    C語言中的指針(重點(diǎn))超詳細(xì)

    C語言中的指針1、指針是什么2、指針指針類型2.1、指針
    發(fā)表于 01-13 14:10 ?11次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中的<b class='flag-5'>指針</b>(重點(diǎn))超詳細(xì)

    C語言-一維指針定義與使用

    指針在很多書本上都是當(dāng)做重點(diǎn)來介紹,作為C語言的靈魂,項(xiàng)目里指針無處不在。 這篇文章介紹指針的基本用法。
    的頭像 發(fā)表于 08-14 10:02 ?1251次閱讀

    C語言進(jìn)階】C語言指針的高階用法

    C語言進(jìn)階】C語言指針的高階用法
    的頭像 發(fā)表于 08-31 13:24 ?2147次閱讀

    C語言中的懸空指針和野指針是什么意思?

    提起C語言大部分開發(fā)者很自然就會想到指針二字,沒錯,作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是指針中的兩個特有名詞
    的頭像 發(fā)表于 02-09 17:20 ?958次閱讀

    詳解C語言指針底層基本原理

    說到指針,估計(jì)還是有很多小伙伴都還是云里霧里的,有點(diǎn)“知其然,而不知其所以然”。但是,不得不說,學(xué)了指針,C語言才能算是入門了。指針
    的頭像 發(fā)表于 04-06 10:43 ?1120次閱讀

    C語言指針用法

    C語言編程中善用指針可以簡化一些任務(wù)的處理,而對于一些任務(wù)(比如動態(tài)內(nèi)存分配),必須要有指針才行的。也就是說精通C
    發(fā)表于 03-05 14:22 ?255次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>指針</b>用法