關於函式內指標地址交換疑惑

2023-01-08 14:25:49 字數 703 閱讀 8454

1樓:匿名使用者

這個,你往函式中傳的只是那個地址a,b的16進位制的值.你在函式中交換了2個地址值,這並不會影響到函式外,因為你操作的只是2個值的拷貝,你想交換a,b的指向的話,要通過指標的指標或指標的引用來操作

int swap(int** a,int** b)int main()

這個**你看看.

2樓:焉思咎芷若

這個問題蠻難講的,在呼叫函式的時候程式會隨著函式呼叫產生兩個指標a,b,指標的值即指標裡存放的地址和你傳進去的引數p,q一樣,所以這個時候你可以用指標a,b來訪問x

和y;但是你寫的int

*t;t=a;a=b;b=t;這句話的意思是將隨函式產生的指標a,b裡面存放的地址改變,a,b的改變不影響x,y的值,也不影響p,q記憶體放的地址;

所以不會交換;

簡單的講,想在函式裡改變x,y

的值,你必須將他們的地址當引數傳進去改變,如果你想改變指標的值,必須將指標的地址當引數傳進去,而不是講指標本身當實參傳進去

3樓:匿名使用者

在形參和實參上你應用的不紮實,還有阿,是「交換」這一個知識點你沒有掌握,無論是在主函式還是子函式中,「交換」是很重要的,形參、實參在傳遞中資料是不一樣的

4樓:莫名

你函式的引數有沒有用引用?沒用的話傳的是形參,a和b的值當然沒有改變啦~

C語言函式及指標問題

代入變數和值的作用域不一樣,也就是,如果通過變數代入,此時不會改變變數的值。如果通過指標 引數 的形式代入,則會可以改變指標指向的變數的值,但是地址不可以改變。如果想改變地址呢,就得用雙指標,或者說第二層地址代入。這個理解起來其實很簡單 只要記住一點,實參和形參不在一個記憶體地址中就可以,改變形參不...

關於指標問題

好好看書阿 朋友,你這完全沒有學過c語言阿 還是生瓜蛋子,不要心急,循序漸進,c可以直接操縱記憶體地址,這是其他語言不具有的特性,指標就是地址,定義指標是變數名前面加 如你的int a,而在使用時,a引用地址,a引用地址的內容。c語言中 任何識別符號定義的方式和他引用的方式一致,這是我看 c tra...

C語言strcpy 函式和指標的題目

strcpy char a char b 的作用,簡單講就是給你兩個記憶體起始地址 你可以將它們想象成給了你兩排箱子,每個箱子都有編號,比如第一排的編號是0,1,2,3,4,第二排的編號是7,8,9,則a,b分別就是這兩排箱子的起始編號 將以b開始的記憶體地址中的資料複製到以a開始的記憶體地址中 就...