国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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

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

分享到微博請遵守國家法律
潮州市| 韶山市| 大埔区| 凌云县| 陆良县| 伊川县| 维西| 民丰县| 临夏市| 旬阳县| 崇左市| 沽源县| 福海县| 眉山市| 荣成市| 娄烦县| 隆林| 旺苍县| 桦南县| 景谷| 修文县| 大邑县| 屯留县| 麻城市| 沧源| 浮山县| 深圳市| 都兰县| 东兴市| 龙井市| 炎陵县| 丹棱县| 三门峡市| 广州市| 大悟县| 金溪县| 石棉县| 宝坻区| 太谷县| 崇文区| 芜湖县|