在 huan(int *p1,int *p2)這個函數中,交換的只是兩個指針的指向,但是函數的結束、返回,這兩個指針本身就消失了(它們的值并不會傳回到main()函數中)所以,最后的結果沒有交換。
成都創(chuàng)新互聯公司專業(yè)為企業(yè)提供廣南網站建設、廣南做網站、廣南網站設計、廣南網站制作等企業(yè)網站建設、網頁設計與制作、廣南企業(yè)網站模板建站服務,十余年廣南做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
C語言.定義一個函數實現交換兩個整數的功能,(用指針做函數參數)。
主函數里指針p指向變量a的地址,q指向變量b的地址,p=a,*q=b,這應該沒問題吧。change函數的形參分別是取a的地址和b的地址,然后用第三個變量t來實現值交換。再打印就是互換后的值。
1、第一種當然沒問題,問題是你寫錯一個地方,{int m,n,t;改成 {int m,n,*t;t要作為指針的交換變量,那t本身也得定義為指針類型。
2、void swap(int *x,int *y) x,y是地址 temp = *x; //temp的值是x地址指向的值 這么理解就明白了。int a;int *a2;a = 5;a2=a2 = 6;運行到這里a就是等于6,有沒有明白呢。
3、解答: 注意形式參數和實際參數的區(qū)別,主函數中的x,y是實際參數,swap函數中的a,b是形式參數。他們各有自己的存儲空間,互不干擾。
4、而你如果要在函數內部改變指針的值,你需要傳入的是指針的地址,也就是指針的指針。將你的Change函數的參數改為(int **p, int **q), 然后再調用的時候改為change(&p, &q)即可。希望對你又幫助。
1、第一種當然沒問題,問題是你寫錯一個地方,{int m,n,t;改成 {int m,n,*t;t要作為指針的交換變量,那t本身也得定義為指針類型。
2、解答: 注意形式參數和實際參數的區(qū)別,主函數中的x,y是實際參數,swap函數中的a,b是形式參數。他們各有自己的存儲空間,互不干擾。
3、因為指針a b是指向指針p q的,所以寫成a b的時候只是單純的指向p q它們所在的地方,而不是指向 i j的地方,也就相當于指針p q換了個位置,使得a指向q也就指向j,b指向p也就指向i,但是i,j自己的值并沒有變化。
4、第一題只是交換了行參,第二個是真的交換了了值。第一題傳遞了兩個地址值過去,保存到這個函數作用欲范圍內,在這個范圍內做了交換,返回了一個地址值,就是指向5那個地址。
5、void swap(int *x,int *y) x,y是地址 temp = *x; //temp的值是x地址指向的值 這么理解就明白了。int a;int *a2;a = 5;a2=a2 = 6;運行到這里a就是等于6,有沒有明白呢。
分享題目:c語言指針函數互換問題 c語言指針互換什么原理
分享URL:http://muchs.cn/article2/depisic.html
成都網站建設公司_創(chuàng)新互聯,為您提供虛擬主機、移動網站建設、全網營銷推廣、微信小程序、網站排名、品牌網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯