呼叫函式實現兩個數交換
兩個數的交換:
#include <stdio.h>
void exchange(int one, int another);
void exchange(int one, int another) {
int tmp;
void exchange(int one, int another) {
int tmp;
printf("exchange():%p\n", &tmp);
tmp = one;
one = another;
another = tmp;
}
int main() {
int num1;
int num2;
printf("請輸入兩個數:");
scanf("%d%d", &num1, &num2);
scanf("%d%d", &num1, &num2);
exchange(num1 ,num2);
printf("交換結果:%d %d\n", num1, num2);
return 0;
}
printf("交換結果:%d %d\n", num1, num2);
return 0;
}
函式exchange()並不能實現主函式中num1和num2空間的值交換。原因:在主函式呼叫函式exchange()時,以棧“先進後出"的原則,先將並num1空間的值傳遞給one空間再將num2空間的值傳遞給two空間,再在exchange()函式中藉助區域性變數tmp,將one和two空間的值進行交換,此刻num1和num2空間的值未因此改變。呼叫完畢後,指標回落,tmp,two和one空間將會出棧,不在受到棧的束縛,而num1和num2空間並未發生變化。因此exchenge( )函式並不能將num1和num2中的值進行交換。
為了實現num1和num2空間值得交換。我們將採用地址傳遞的方法。程式碼如下:
#include<stdio.h>
void realchange(int *, int *);
void realchange(int *one, int *another)
{
int tmp;
tmp =*one;
*one = *anthoner;
*another = tmp;
}
int main()
{
int num1;
int num2;
scanf('%d %d', &num1,&num2);
realchange(&num1, &num2);
printf('交換後:%d %d', num1, num2);
return 0;
}
主函式在呼叫realchange()是將num1和num2空間的首地址分別傳遞給指標變數one和two的空間,即:*one=&num1(one指向num1)*two=&num2(two指向num2) 在realchange()中,將one所指向的空間(num1)的值賦給tmp空間,再將two所指向的空間(num2)的值賦給one所指向的空間,最後將tmp空間的值賦給two所指向的空間.最終達到交換num1和num2空間的值的目的。
相關文章
- JavaScript實現兩個數的交換JavaScript
- 交換兩個變數變數
- 交換兩個整型變數變數
- 異或交換兩個數的值
- Swift交換兩個變數的值Swift變數
- 兩個JS之間的函式互相呼叫JS函式
- C++ 一種交換兩個數的思路C++
- 面試題-JavaScript交換兩個變數的方法面試題JavaScript變數
- 不使用臨時變數交換兩個變數的值變數
- c語言 - 交換兩個變數(不建立臨時變數)兩種方法C語言變數
- 如何使用OO和函式式兩個方法實現重構? - DZone函式
- 如何不使用臨時變數,交換兩個變數的值。變數
- Linux QoS實現框架:函式呼叫流程圖Linux框架函式流程圖
- 交換兩個資料的三種方法
- vue在一個函式中呼叫另外一個函式Vue函式
- 設計模式,你相信嗎,只用兩個函式實現事務!設計模式函式
- C語言交換兩個變數的值的5種基本方法C語言變數
- Python面試技巧-交換兩個元素的值Python面試
- 函式的呼叫方式和引數函式
- 自己實現一個簡單可變引數函式函式
- axios為什麼可以使用物件和函式兩種方式呼叫?是如何實現的?iOS物件函式
- 【C語言】給定兩個整型變數的值,將兩個值的內容進行交換C語言變數
- Python中將函式作為另一個函式的引數傳入並呼叫Python函式
- gohook 一個支援執行時替換 golang 函式的庫實現HookGolang函式
- 前端--任意數求和(有名函式實現)前端函式
- 使用resilience4j-retry實現函式呼叫重試函式
- mysql交換兩行或兩列的值MySql
- python不定長引數如何呼叫函式?Python函式
- 利用標準I/O函式,實現兩個檔案的複製功能函式
- 異或運算的巧用 → 不用額外的變數,如何交換兩個變數的值?變數
- 交換2個整形數引發的思考
- 不用第三個變數,交換變數的值變數
- 提升逼格的兩個函式函式
- 子函式呼叫函式
- 函式呼叫棧函式
- 深入探討Function Calling:實現外部函式呼叫的工作原理Function函式
- ClickHouse原始碼筆記3:函式呼叫的向量化實現原始碼筆記函式
- 函式呼叫引數變數傳值的問題函式變數