Mirror驅(qū)動在win8上不是失效,只是默認(rèn)沒有安裝,還是可以用的
正在學(xué)習(xí)四叉樹LOD,同求一份代碼,多謝~~~
423322338@qq.com
re: C++文件操作[未登錄] q 2012-06-26 15:03
謝謝
re: 簡陋的C++畫圖程序[未登錄] q 2011-04-25 14:56
寫的不錯
re: Dijkstra算法[未登錄] Q 2009-10-01 03:01
請問可以告訴我 INT_MAX是什么
看了這位老兄的東西
自嘆不如,
也有很多的感慨.
祝你越走越好
我想我是明白你的意思了。其實我們說的都是一樣的,swap里的int *x,*y是臨時的。只要不對指針?biāo)赶虻闹底龈模趕wap里無論怎么更改x,y的值,對于外部來說,都是徒勞的。不知道你是不是也是這個意思?
任我行兄如果有興趣的話,我們可以繼續(xù)討論 :)
方法三:
通過int *&x,int *&y
&的作用和指針一樣,但是它是直接作用于實參x,y上(在本例中)
p=x;
x=y;
y=p;
這個時候在swap()中的操作其實是完全對實參x,y的操作了,也就是把外部x,y所指向的地址相互交換了一下。所以,在main()中使用*x,*y得到的結(jié)果為2,10的時候,其實使用了上面臨近評論里的意思:用了個障眼法!其實這個時候在main()中的*x,*y好比之前真正的*y,*x(說白了a,b所在地址和數(shù)值完全沒改變)不知道任我行兄能否理解我的意思?
繼續(xù)。
方法一:
p=x;
x=y;
y=p;
cout<<*x<<" "<<*y<<endl;
//得出的結(jié)果為 2,10
//那是因為x,y交換了分別指向的地址而已,所以從表面上看以為是更改了a,b地址的內(nèi)容,其實什么也沒變,現(xiàn)在的*x其實就是之前的y指向地址的實際數(shù)值,同樣y也是
是我沒有說明白,方法一交換了地址,不過是交換了零時值而已,不會影響到外面。
---------------------------------------------------
方法一并沒有交換臨時數(shù)值(我說的這個臨時數(shù)值不是a,b的地址,而是a,b的實際數(shù)值)。臨時指針x,y可以指向任何地址,也就是說現(xiàn)在x指向a所在地址,等下也可以指向b所在地址,有什么關(guān)系呢?我x不解引用,不做為右值,那就不會改變a,b所在地址內(nèi)的實際數(shù)值。
“怎樣利用swap(int *x,int *y)交換x,y指向的地址值”,也就是a,b的內(nèi)存地址。
你能交換a,b的內(nèi)存地址么,不能。你要交換的是x,y的值。而不是交換a,b內(nèi)存的值。
--------------------------------------------------------
不明白你的意思?
但是我想說下,如果方法四中不是交換了a,b的內(nèi)存值,那你看到的會是什么結(jié)果?
re: C++閱讀漸進(jìn)書目 Q 2006-05-26 11:39
如果我有時間,我一定要把這些書全部讀完~
這也就是方法四能夠正確執(zhí)行的原因:只要臨時指針x沒有解引用,沒有對所指向的地址的內(nèi)容進(jìn)行操作,則不管x 指向哪里,以前地址里的內(nèi)容仍然不會改變!
to 任我行:
我說的交換地址是指 “臨時指針x,y所指向的 a,b的內(nèi)存地址”,并非“指針x,y的地址!”。從方法一中可以看到,臨時指針x起先指向a的地址,之后改為指向b的地址,指針的特性就是可以指向任何地址,但是只要臨時指針x沒有解引用,沒有對所指向的地址的內(nèi)容進(jìn)行操作,則不管x 指向哪里,以前地址里的內(nèi)容仍然不會改變:a的數(shù)值仍然是以前的,b的數(shù)值也仍然是以前的。
re: 泛型算法 Q 2006-03-10 12:06
呵呵,能做個連接吧?我也是個新手,也正在看C++ Primer,希望能和你做個朋友,共同進(jìn)步~~~
re: 我的博客生涯 Q 2006-03-06 13:10
呵呵,大家一起進(jìn)步,我也是才接觸C++沒多久,其實是間斷性的學(xué)的。。。呵呵