呼叫函式實現兩個數交換
兩個數的交換:
#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
- 交換兩個變數變數
- 兩個JS之間的函式互相呼叫JS函式
- 交換兩個整型變數變數
- 淺析一個函式呼叫另一個函式的變數函式變數
- Swift交換兩個變數的值Swift變數
- 如何交換兩個變數的值變數
- 如何使用OO和函式式兩個方法實現重構? - DZone函式
- 直譯器構造實現函式呼叫函式
- python 交換兩個變數的方式Python變數
- C++ 引用 (交換兩個數的值)C++
- 在JS中一個function函式要呼叫另一個函式裡的變數。JSFunction函式變數
- php不用第三個變數,交換兩個數的值PHP變數
- vue在一個函式中呼叫另外一個函式Vue函式
- 設計模式,你相信嗎,只用兩個函式實現事務!設計模式函式
- Linux QoS實現框架:函式呼叫流程圖Linux框架函式流程圖
- js實現的iframe呼叫父頁面函式JS函式
- 面試題-JavaScript交換兩個變數的方法面試題JavaScript變數
- C++取反交換兩個數的值C++
- C++ 一種交換兩個數的思路C++
- 自己實現一個簡單可變引數函式函式
- 函式的呼叫方式和引數函式
- js不使用第三個變數交換兩個變數的值JS變數
- 不用第三個變數,直接交換兩個變數的值變數
- 不使用臨時變數交換兩個變數的值變數
- JavaScript兩個變數交換值(不使用臨時變數)JavaScript變數
- C的兩個數值交換(Android之JNI)Android
- c語言 - 交換兩個變數(不建立臨時變數)兩種方法C語言變數
- 前端--任意數求和(有名函式實現)前端函式
- C可變引數函式 實現函式
- (函式)實現strstr函式函式
- Python中將函式作為另一個函式的引數傳入並呼叫Python函式
- 利用標準I/O函式,實現兩個檔案的複製功能函式
- 一個有用的函式-實現dump函式的convert!函式
- 使用resilience4j-retry實現函式呼叫重試函式
- 用一個巨集實現求兩個數中的最大數
- 面試題,實現一個求和函式面試題函式
- 如何實現函式返回多個值函式