非常規(guī)入門C語言:5其垄、標識符苛蒲、數(shù)據(jù)和作用域

<p>在上一章中,我們了解了地址這個調皮鬼绿满,但是在萬千數(shù)據(jù)中臂外,我們不可能記住所有數(shù)據(jù)的存放的地址,這時喇颁,就需要用一個能夠方便記憶的東西來代表數(shù)據(jù)的地址漏健,進而代表數(shù)據(jù)本身。最簡單的方式就是給數(shù)據(jù)起一個名字橘霎,而這個名字就對應指定的數(shù)據(jù)蔫浆。這個“名字”就叫做“標識符”。</p><p>既然標識符能夠代表指定的數(shù)據(jù)姐叁,那么它必然包含一些其他的信息瓦盛,因為數(shù)據(jù)并不是單純的一個數(shù)值。在前面幾個章節(jié)講解中外潜,無論什么樣的數(shù)據(jù)都至少包含三個重要元素:數(shù)據(jù)的值原环、數(shù)據(jù)的類型和數(shù)據(jù)的地址,至于數(shù)據(jù)究竟存儲在哪里橡卤,并不是最重要的扮念,因為只要知道數(shù)據(jù)的地址,就能夠找到這個數(shù)據(jù)碧库。</p><p>而使用標識符表示數(shù)據(jù)本身柜与,那么標識符也應該包含這三個要素:數(shù)據(jù)的值、數(shù)據(jù)的類型和數(shù)據(jù)的地址嵌灰。</p><p>但是我們要考慮到弄匕,數(shù)據(jù)是可以重復的,但是標識符是否可以重復呢沽瞭?</p><p>很顯然迁匠,不能!為什么呢驹溃?</p><p>因為引入標識符就是為了方便數(shù)據(jù)的可讀性城丧,我們看到標識符就能夠很快清楚,標識符表達的具體含義豌鹤。也就是說一旦標識符重復亡哄,就違反了我們的初衷。</p><p><strong>那什么情況下布疙,標識符能夠“重復”呢蚊惯?</strong> </p><p>很明顯愿卸,當上一個標識符代表的數(shù)據(jù)被“銷毀”后,同一個標識符就可以表示其他的數(shù)據(jù)截型,那數(shù)據(jù)銷毀的標志是什么呢趴荸?這就需要對數(shù)據(jù)進行范圍的限制,因為不論是理論中的數(shù)據(jù)還是自然界中的數(shù)據(jù)也同樣擁有自己的“活動范圍”或“有效范圍”宦焦。</p><p>針對數(shù)據(jù)的“有效范圍”稱為數(shù)據(jù)的“生命周期”发钝,也可以稱為“作用域”,在作用域內赶诊,同樣的標識符不能再次出現(xiàn)笼平。這里存在一個問題:那就是一個班級是可能存在同名的學生,而這些同名的學生都可以在一個教室中“活動”舔痪。這是因為這些同名的學生可能屬于不同的家庭,即所屬范圍不一樣锌唾。</p><p>映射到編程語言中就是锄码,數(shù)據(jù)的標識符在所屬范圍內應當是嚴格唯一的。只要所屬范圍不一樣晌涕,那同名數(shù)據(jù)也互不影響滋捶。這里的“所屬范圍”也可以視為一種“作用域”,只不過這個“作用域”只存放數(shù)據(jù)余黎。</p>


<p>在眾多數(shù)據(jù)中重窟,有一個特殊的存在,那就是函數(shù)惧财。其實巡扇,函數(shù)是一種特殊的數(shù)據(jù),它的內部不僅包含其他的數(shù)據(jù)垮衷,還有對數(shù)據(jù)的操作指令以及返回值厅翔。也就是說,“函數(shù)”本身就是一種數(shù)據(jù)類型搀突,那該怎樣定義出“函數(shù)”呢刀闷?</p>
<p>我們先考慮在數(shù)學中函數(shù)是如何表示的,在初等數(shù)學中仰迁,函數(shù)的表達式是f(x)=...甸昏,同時不同功能的函數(shù)的擁有不同的表達式,不同表達式的內部邏輯也可能是不一樣的徐许。例如直線的表達式:f(x)=ax+b</p><p>其中x是自變量施蜜,a和b是常數(shù),而f是這個表達式的名字绊寻,(x)是名為f的函數(shù)的參數(shù)花墩。而其中的f(x)就是這個表達式的聲明悬秉,ax+b是表達式的定義,根據(jù)參數(shù)x求出的結果是函數(shù)f(x)的返回值或結果值冰蘑。</p><p>以此類比和泌,在C語言中,返回值的類型默認為int祠肥,即在聲明和定義函數(shù)時武氓,返回值類型一般可以不寫。但參數(shù)的類型必須被指定出來仇箱。</p><p class="image-package"><img class="uploaded-img" src="https://upload-images.jianshu.io/upload_images/27354708-21fb1ff559b09770.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width="auto" height="auto"/></p><p>大括號以及大括號中的內容就是名為add的函數(shù)的定義县恕,而int add(int num1, int num2)就是函數(shù)的聲明。一般而言剂桥,任何數(shù)據(jù)只有聲明后忠烛,才能被夠定義,定義又可以稱為“實現(xiàn)”权逗。定義是可以包含聲明的美尸。</p><p>這個名為add的函數(shù)的作用域就是雙大括號之間的任何位置。在add函數(shù)中聲明的所有數(shù)據(jù)只能在add函數(shù)內部使用斟薇,一旦超出add函數(shù)的范圍师坎,那么超出這個范圍,其內部的數(shù)據(jù)就是無效的堪滨、不可訪問的胯陋。</p><p>既然函數(shù)也是一種數(shù)據(jù),那么就可以將函數(shù)內部的數(shù)據(jù)稱作是函數(shù)的一些較為特殊的屬性袱箱,因為這些屬性只能在函數(shù)內部訪問遏乔,在函數(shù)外部是不可訪問的。函數(shù)內部的數(shù)據(jù)稱為“局部數(shù)據(jù)”犯眠,而數(shù)據(jù)的載體一般又稱為“變量”按灶,于是“局部數(shù)據(jù)”有可以稱為“局部變量”。而一些不能被修改的數(shù)據(jù)被稱為“常量”筐咧。</p>
<p>那有沒有辦法能夠讓我們訪問函數(shù)的局部變量呢鸯旁?當然有!而且還很粗暴:<strong>第一種方法</strong>就是使用全局變量量蕊,全局嘛铺罢,不在任何函數(shù)內部,也就意為著誰都可以訪問残炮,沒有任何限制韭赘,但會有安全問題。<strong>第二種方法</strong>就是使用共享區(qū)域的內存势就。</p>
<h1>使用共享內存訪問函數(shù)局部變量</h1><p>只要是被聲明或這被定義出來的數(shù)據(jù)泉瞻,就必然在會有一個對應的唯一的地址脉漏,只要想辦法訪問這個地址,就能夠訪問到函數(shù)的局部變量袖牙。那怎樣保存數(shù)據(jù)的地址呢侧巨?指針!因為指針就是為了存儲變量的地址而存在的鞭达。</p><h1>指針司忱、標識符、數(shù)據(jù)的地址之間的關系</h1><p>標識符指的是數(shù)據(jù)本身畴蹭,指針只存儲數(shù)據(jù)的地址坦仍。</p><p>而指針本身就是一種數(shù)據(jù),但標識符不是叨襟,標識符只是數(shù)據(jù)的助記符繁扎。</p><p>
</p><p/>

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糊闽,隨后出現(xiàn)的幾起案子锻离,更是在濱河造成了極大的恐慌,老刑警劉巖墓怀,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卫键,居然都是意外死亡傀履,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門莉炉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钓账,“玉大人,你說我怎么就攤上這事絮宁“鹉海” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵绍昂,是天一觀的道長啦粹。 經常有香客問我,道長窘游,這世上最難降的妖魔是什么唠椭? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮忍饰,結果婚禮上贪嫂,老公的妹妹穿的比我還像新娘。我一直安慰自己艾蓝,他們只是感情好力崇,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布斗塘。 她就那樣靜靜地躺著,像睡著了一般亮靴。 火紅的嫁衣襯著肌膚如雪馍盟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天台猴,我揣著相機與錄音朽合,去河邊找鬼。 笑死饱狂,一個胖子當著我的面吹牛曹步,可吹牛的內容都是我干的。 我是一名探鬼主播休讳,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼讲婚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俊柔?” 一聲冷哼從身側響起筹麸,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雏婶,沒想到半個月后物赶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡留晚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年酵紫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片错维。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡奖地,死狀恐怖,靈堂內的尸體忽然破棺而出赋焕,到底是詐尸還是另有隱情参歹,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布隆判,位于F島的核電站犬庇,受9級特大地震影響,放射性物質發(fā)生泄漏蜜氨。R本人自食惡果不足惜械筛,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望飒炎。 院中可真熱鬧埋哟,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抛计,卻和暖如春哄孤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吹截。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工瘦陈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人波俄。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓晨逝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懦铺。 傳聞我的和親對象是個殘疾皇子捉貌,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容