传值的一点认识
今天又把C++課本翻了一遍,發(fā)現(xiàn)了好多以前沒徹底弄清楚的問題,比如說傳值。
說起傳值,最先想到的恐怕是賦值,他是最基本的傳值方式,不過有時候我們希望用另外的方式來傳值。傳值一共有三種方式,第一種是賦值,第二種是指針(傳地址),第三種是引用。
三種方式的區(qū)別:
???????????? 賦值是最簡單的,打個比方說,它實質(zhì)上是把?你copy出另一個你放到棧里(可以理解成客棧,呵呵,雖然不太恰當(dāng)),然后對copy的那個你進行操作,比如這種操作是打殘,那么copy的那個你就殘了,如果有return返回,返回的是那個copy的你,第二天報紙說XXX被打殘了,實際上原來的你老老實實在家呆著,沒有變化,但是那個copy的你代替了真實的你,別人看到報紙后,就會以為你真的殘了(實際上你好好著呢,殘的是copy的那個你),這就是賦值的特點,傳值時不改變內(nèi)容。
???????????? 傳地址相對難理解一點,你就當(dāng)指針是GPS吧,如果我想找你,就通過GPS定位你的地址,然后通過去內(nèi)容把你從地址中揪出來,對地址中的你操作和對你直接操作是一樣的,我想轟炸你,可以直接對你轟炸,也可以轟炸你的地址,最后結(jié)果都是轟炸到你。指針還有個靈活性,我不想轟炸你了,想轟炸你的鄰居,那么把指針挪一下就行了。指針傳值是對地址中內(nèi)容進行操作,會改變原有的值。
??????????????? 最后一個是引用傳值,我們語文上講的引用,是把別人的話拿過來變成自己的,傳值也和這差不多,比如說你叫張三,然后我們給你取外號叫三三,那么對三三的操作等同于對張三的操作,我們叫三三,那么張三就會答應(yīng),引用也就相當(dāng)于取個新名字,當(dāng)然,引用會改變原有的值。
注:指針很強大,如果比作一把刀,那么這把刀可以殺豬?,可以砍柴,可以切菜.....不過也很危險,它還可以殺人,使用時要細心。?
說起傳值,最先想到的恐怕是賦值,他是最基本的傳值方式,不過有時候我們希望用另外的方式來傳值。傳值一共有三種方式,第一種是賦值,第二種是指針(傳地址),第三種是引用。
三種方式的區(qū)別:
???????????? 賦值是最簡單的,打個比方說,它實質(zhì)上是把?你copy出另一個你放到棧里(可以理解成客棧,呵呵,雖然不太恰當(dāng)),然后對copy的那個你進行操作,比如這種操作是打殘,那么copy的那個你就殘了,如果有return返回,返回的是那個copy的你,第二天報紙說XXX被打殘了,實際上原來的你老老實實在家呆著,沒有變化,但是那個copy的你代替了真實的你,別人看到報紙后,就會以為你真的殘了(實際上你好好著呢,殘的是copy的那個你),這就是賦值的特點,傳值時不改變內(nèi)容。
???????????? 傳地址相對難理解一點,你就當(dāng)指針是GPS吧,如果我想找你,就通過GPS定位你的地址,然后通過去內(nèi)容把你從地址中揪出來,對地址中的你操作和對你直接操作是一樣的,我想轟炸你,可以直接對你轟炸,也可以轟炸你的地址,最后結(jié)果都是轟炸到你。指針還有個靈活性,我不想轟炸你了,想轟炸你的鄰居,那么把指針挪一下就行了。指針傳值是對地址中內(nèi)容進行操作,會改變原有的值。
??????????????? 最后一個是引用傳值,我們語文上講的引用,是把別人的話拿過來變成自己的,傳值也和這差不多,比如說你叫張三,然后我們給你取外號叫三三,那么對三三的操作等同于對張三的操作,我們叫三三,那么張三就會答應(yīng),引用也就相當(dāng)于取個新名字,當(dāng)然,引用會改變原有的值。
注:指針很強大,如果比作一把刀,那么這把刀可以殺豬?,可以砍柴,可以切菜.....不過也很危險,它還可以殺人,使用時要細心。?
總結(jié)