本文目錄一覽:
- 1、如何通過調用函數交換兩個變量的值及常見誤
- 2、子函數中得出的兩個變量如何被主函數調用(C語言)
- 3、C語言中調用函數交換兩個變量的值需要傳遞地址,為什麼相加就可以直接用
- 4、c語言:調用函數,交換兩個變量的值。
- 5、C語言中函數調用怎麼返回兩個值
如何通過調用函數交換兩個變量的值及常見誤
c語言主函數中交換兩個變量的值,可以通過以下代碼實現:
#includestdio.h
int main()
{
int a=10,b=20,temp;//先定義一個temp
//以下實現兩個變量的交換(具體理解請參照圖一)
temp=a;
a=b;
b=temp;
printf(“a=%d,b=%d”,a,b);//此時a=20,b=10;
return 0;
}
但是如何通過調用函數實現交換兩個變量的值呢?
首先我們先寫一下主函數
#includestdio.h
//調用函數前應先聲明一下被調用函數,此處暫時省略,分析完畢形參後,會寫上正確格式
//主函數
int main()
{
int a=10,b=20;
swap( );//此處正確寫法應加入實參,但是為了分析,此時暫未寫實參
printf(“a=%d,b=%d”,a,b);
return 0;
}
//以下為被調用函數中常見錯誤
//常見錯誤1:
void swap( int m,int n )//接收a和b的值
{
int temp=m;
m=n;
n=temp;
}
//此處錯誤在於,此處為值傳遞,被調函數swap中交換了m和n的值,並未交換主函數中a,b的值,所以a和b輸出結果仍然為a=10,b=20;具體參考下圖
//常見錯誤2:
void swap( int *m,int* n )//接收a和b的地址
{
int *temp=m;//定義一個指針temp,把指針m中的地址賦給指針temp
m=n;
n=temp;
}
//此處錯誤在於,swap中實現了,兩個指針m和n指向的交換,但是並未對主函數中的a和b進行操作,所以輸出結果依然為a=10,b=20;具體參考下圖
//正確寫法如下:
void swap( int *m,int* n )//接收a和b的地址
{
int temp=*m;;//定義一個整形變量temp,然後把指針m指向的a中的值,賦給temp,此處實現了對主函數中a的操作
*m=*n;
*n=temp;
}
//從上面即可知道主函數,需要傳遞給swap函數的實參為a和b的地址,從而主函數調用部分實參和聲明應該寫為:
#includestdio.h
void swap( int *m,int* n );
//上面正確的swap函數應該複製在此處;
int main()
{
int a=10,b=20;
swap(a,b);
printf(“a=%d,b=%d”,a,b);//此時a=20,b=10;
return 0;
}
//以下為具體操作流程圖:
子函數中得出的兩個變量如何被主函數調用(C語言)
需要從函數中返回多於1個變量值時,最常用、也較簡單的辦法是在主調函數中聲明變量,把變量的地址傳給被調函數,在被調函數中通過指針直接操作主調函數中的變量。如此題中在主調函數中聲明x和y,把x和y的地址(指針)傳給被調函數。舉例如下:
//#include “stdafx.h”//If the vc++6.0, with this line.
#include “stdio.h”
void f(int *x,int *y){
*x=10;
*y=34;
}
int main(void){
int x,y;
f(x,y);
printf(“x = %d\ny = %d\n”,x,y);
return 0;
}
C語言中調用函數交換兩個變量的值需要傳遞地址,為什麼相加就可以直接用
舉個栗子:
有100個房間,從0到99編號,每個房間放在不同的食材。
交換兩個變量的值
只需要告訴你把A房間和B房間的東西調換,你不需要知道房間裡面放的是什麼。只需要知道AB的房間號;
加法:如果問你A房間和B房間里的食材可以做什麼菜,你就需要知道AB房間分別放了什麼。不需要知道房間號。
c語言:調用函數,交換兩個變量的值。
這個無法交換數據。
C語言函數參數的基本規則是值傳遞,所以傳遞時只能實現實參向形參的單向的、值的傳遞。這就是為什麼需要使用指針才能實現值交換的原因。
C語言中函數調用怎麼返回兩個值
在C語言中,函數只能返回一個值,要返回兩個值,可以改換思路,通過其它方式做到。
1 建立數組,返回指針。
在要返回的兩個值類型相同時,可以用創建數組的方式,將要返回的值存在數組中,並返回數組首地址,這樣就可以實現返回兩個值的效果。
需要注意的是,要返回數組首地址,那麼返回的值不可以是局部變量,有如下幾種是可以的:
a) 使用靜態局部變量存儲,並返回地址;
b) 使用全局變量存儲,返回地址;
c) 函數中動態分配內存,並返回申請到的地址,此種方法需要注意,在使用後需要釋放;
d) 在參數中傳入數組地址,並返回。即返回的實際上是主調函數中的變量地址。
2 建立結構體,返回結構體變量。
將需要返回的值,寫成結構體形式,並返回結構體變量,這樣可以實現一個返回值中含有多組數據。
3 當數據規模較小時,可以採用將小規模數據合併為大規模數據的方式,進行返回。
比如,需要返回兩個char型數據時,可以通過返回一個short數據,高地位分別存儲各自的值。
除以上方法外,還可以不使用返回值的方式,而是通過函數參數傳值,或者全局變量傳值等方式,將要返回的值回傳給主調函數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/244280.html