五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

從編程思想的角度討論引用機制的作用

2023-04-05 18:22 作者:暇時薄空  | 我要投稿

注:這里的代碼不對應(yīng)任何編程語言

何謂引用?

在Java和C++等高級語言中,一個引用是一個變量或其他對象的別名,它在聲明時就唯一綁定了。

int a;int &b = a;

有了以上定義,對引用b的操作就是對變量a的操作,而引用b是不能再作為其他對象的別名,事實上C++編譯器就將引用作為const指針處理。

引用有效地避免了濫用指針帶來的安全隱患,當然引用也可作為函數(shù)參數(shù)、函數(shù)返回值、const引用可指向字面值常量等等,引用幾乎和指針一樣功能強大。

函數(shù)參數(shù)的值傳遞與引用傳遞

值傳遞和引用傳遞是函數(shù)傳參調(diào)用的兩種實質(zhì)方式,C語言函數(shù)傳參采用的就是值傳遞的形式。Java、C++、Python等新的語言都在提函數(shù)參數(shù)的引用傳遞這種形式,即實參會隨形參變。

由函數(shù)調(diào)用來確定參數(shù)傳遞形式的思想

目前,大多數(shù)高級語言函數(shù)在定義后已經(jīng)確定好了參數(shù)的值傳遞還是引用傳遞,在函數(shù)調(diào)用時是不能變的?,F(xiàn)在,代碼的重復(fù)利用被越來越重視起來了,自然就少不了對函數(shù)調(diào)用的研究。

函數(shù)一般都可以看作一種計算,同樣的計算可能會被應(yīng)用于多個對象,而每個對象自身值是否改變的要求又不一樣。現(xiàn)在來做具體探究

void fun(int);int a = 5, b = 10;

定義好了函數(shù)fun,變量a和b,要求a傳參后不變,b傳參后隨fun改變。

1.函數(shù)定義好了就確定了傳參形式會怎么樣?

如果是值傳遞,a傳參沒問題,但是滿足不了b傳參要求。要么針對b傳參構(gòu)造一個函數(shù)fun2,要么利用指針改進fun,就展示下改進的fun函數(shù)的調(diào)用

void fun(int *);int a = 5, b = 10;int c = a;fun(&c);fun(&b);

雖然能解決問題,但代碼就有點難看了。

那如果是引用傳遞呢?

int a = 5, b = 10;int c = a;fun(c);fun(b);

其實和用指針改進差不多。。

2.靈魂之問:由函數(shù)的調(diào)用來確定傳參會怎么樣?

int a = 5, b = 10;fun(a); ? //假定這種調(diào)用是值傳遞fun(b&); ?//假定這種調(diào)用是引用傳遞

這就相當直觀了,代碼也十分簡潔。完全可以這么理解傳參,值傳遞就是把實參復(fù)制一個副本來用,被調(diào)函數(shù)只改變參數(shù)副本,實參本身并不變;引用傳遞是被調(diào)函數(shù)就是在用實參本身,故原實參會隨被調(diào)函數(shù)變化。由調(diào)用確定傳參的原理就是:傳值調(diào)用就讓函數(shù)使用實參副本,傳引用調(diào)用就讓函數(shù)使用實參本身。

再來看下當函數(shù)有兩個參數(shù)時,調(diào)用確定傳參有什么優(yōu)勢?

void f2(int, float);int a = 100;float x = 3.14;f2(a, x); ? a,x都不變f2(a, x&); ?只有x能變f2(a&, x); ?只有a能變f2(a&, x&); a,x都能變

我們發(fā)現(xiàn)這樣一個函數(shù)竟然有了四種調(diào)用形式,一種計算輕易做到多種結(jié)果,可見這種機制對于編程是十分靈活的。所以,調(diào)用確定傳參的思想對于程序設(shè)計的靈活性以及代碼的復(fù)用性的優(yōu)勢是極大的。

本文重點:調(diào)用定傳參的編程思想


原文出處:從編程思想的角度討論引用機制的作用 - 自導者薄空的文章 - 知乎 https://zhuanlan.zhihu.com/p/612827775

從編程思想的角度討論引用機制的作用的評論 (共 條)

分享到微博請遵守國家法律
手游| 宁陕县| 方正县| 城步| 祁门县| 汤阴县| 克山县| 辽宁省| 开江县| 平江县| 德兴市| 吉林市| 翁牛特旗| 望奎县| 贵州省| 仁怀市| 屯门区| 贵德县| 晋州市| 中卫市| 余江县| 巍山| 大方县| 江山市| 阜康市| 江津市| 慈溪市| 冕宁县| 无锡市| 日土县| 南安市| 临夏市| 安溪县| 福建省| 稻城县| 长乐市| 宿州市| 广东省| 中宁县| 华坪县| 丰台区|