新聞中心
c語(yǔ)言問(wèn)題,不知道為什么s1,s2的值調(diào)換不了,求高手指教:
1、C語(yǔ)言的函數(shù)形式參數(shù)是函數(shù)的局部變量,你把實(shí)參地址值傳給形參指針,在函數(shù)中交換只在函數(shù)中起作用,影響不到主調(diào)函數(shù)中實(shí)參指針的值。
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)制作、做網(wǎng)站、建網(wǎng)站。創(chuàng)新互聯(lián)建站擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計(jì)專才。
2、發(fā)現(xiàn)問(wèn)題:往往生活在世界中,時(shí)時(shí)刻刻都處在這各種各樣的矛盾中,當(dāng)某些矛盾放映到意識(shí)中時(shí),個(gè)體才發(fā)現(xiàn)他是個(gè)問(wèn)題,并要求設(shè)法去解決它。這就是發(fā)現(xiàn)問(wèn)題的階段。
3、圖中的代碼交換了兩個(gè)指針ss2的值。在這里,指針值其實(shí)就是指針?biāo)赶虻淖址趦?nèi)存中的位置。所以s1指向了“123”,s2指向了“abc”。
我定義的swap函數(shù)哪里出問(wèn)題了(初學(xué)者)?
你將temp指針賦初值0,即NULL,意味著temp沒(méi)有指向有意義的地址,其實(shí)指向0X00000000,但是那個(gè)地方你不能用,也就是說(shuō)*temp無(wú)法賦值。
swap是C++函數(shù)庫(kù)里里面的一個(gè)用來(lái)交換2個(gè)數(shù)的函數(shù),你用這個(gè),系統(tǒng)會(huì)自動(dòng)調(diào)用C++函數(shù)庫(kù)里面的函數(shù),而不是你自己寫的函數(shù)。
void swap(int *p1,int *p2) //函數(shù)的作用是將*p1的值與*p2的值交換 { int temp=0; //temp不需要定義成指針,因?yàn)樗怯脕?lái)存儲(chǔ)p1中的數(shù)據(jù)的,所以只需要用一個(gè)整型變量就可以了。
把地址轉(zhuǎn)變成int也是會(huì)把高位截掉的。C語(yǔ)言的參數(shù)本身是不能改的。如果參數(shù)是地址,可以改變?cè)摰刂穬?nèi)的值,但是不能改變地址本身。
C語(yǔ)言指針問(wèn)題。
1、如有定義char y[4]= 321則表達(dá)式 *y+2的值是5 。分析:y是字符串?dāng)?shù)組首元素3的地址,*y的值就是字符3,再加上2,就是字符5(也可以說(shuō)是字符5的ASC碼值)。
2、問(wèn)題是這里實(shí)參和形參是傳值,所以不會(huì)改變。調(diào)用test是只是把實(shí)參str指向的地址NULL傳給形參string, 在函數(shù)里string通過(guò)賦值指向新的地址常量,這個(gè)過(guò)程跟str沒(méi)有關(guān)系,不會(huì)改變。
3、P指向a存值的地址,如p指向地址的內(nèi)存的值為0001,則*p=0001(為1),這時(shí)修改*p=0010,則a的值相應(yīng)的被修改為2。
4、A:char *a說(shuō)明*a是一個(gè)字符,而china是一個(gè)字符串,因此賦值錯(cuò)了。
5、D p是指針數(shù)組,每個(gè)元素都是指針,其中D就是對(duì)的 p[0]是指針,&a[0]也是指針(地址) D p[3]指向10, 所以再往后數(shù)兩個(gè)p[3][2]是12 B argc是參數(shù)個(gè)數(shù),test 和 hello 。
網(wǎng)站題目:c語(yǔ)言swap函數(shù)出錯(cuò) c語(yǔ)言的swap函數(shù)
當(dāng)前路徑:http://www.ef60e0e.cn/article/depsooe.html