最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言用fun函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換方式

 更新時(shí)間:2022年12月05日 14:18:10   作者:越菜越要努力  
這篇文章主要介紹了C語(yǔ)言用fun函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

用fun函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換

#include <stdio.h>

void fun(int *x,int *y)//定義fun函數(shù),此時(shí)需要注意與main函數(shù)時(shí)的定義方式相同
{
?? ?int t;//定義一個(gè)中間變量,用于讓兩個(gè)數(shù)交換留一個(gè)位置
?? ?t=*x,*x=*y,*y=t;
}
void main()
{
?? ?int a,b;
?? ?scanf("%d %d",&a,&b);//定義兩個(gè)交換的數(shù)
?? ?fun(&a,&b);
?? ?printf("%d ?%d\n",a,b);
}

函數(shù)交換兩個(gè)數(shù),常見錯(cuò)誤

問題:提供倆個(gè)數(shù),利用函數(shù)實(shí)現(xiàn)交換。

出現(xiàn)的錯(cuò)誤情況如下:

  • 第一種情況:值傳遞;(如函數(shù)Swap_err01)
  • 第二種情況:沒解引用;(如函數(shù)Swap_err02)
  • 第三種情況:懸掛指針。(如函數(shù)Swap_err03)

能實(shí)現(xiàn)交換兩個(gè)數(shù)的函數(shù),在函數(shù)Swap可以實(shí)現(xiàn)。

代碼如下:

#include <stdio.h>
void Swap_err01(int a,int b)
{
	int tmp;
	tmp = a;
	a = b;
	b = tmp;
}
void Swap_err02(int *p1,int *p2)
{
	int *tmp = p1;
	p1 = p2;
	p2 = tmp;
}
void Swap_err03(int *p1,int *p2)
{
	int *tmp;
	*tmp = *p1;
	*p1 = *p2;
	*p2 = *tmp;
}
void Swap(int *p1,int *p2)
{
	int tmp;
	tmp = *p1;
	*p1 = *p2;
	*p2 = tmp;
}
int main ()
{
	int a=10;
	int b=20;
	printf("a=%d,b=%d\n",a,b);
	
	//Swap_err01(a,b);	
	//Swap_err02(&a,&b);	
	//Swap_err03(&a,&b);
	Swap(&a,&b);
 
	printf("a=%d,b=%d\n",a,b);	
	return 0;
}

編譯結(jié)果如下:

函數(shù)Swap_err01的編譯結(jié)果:

由結(jié)果可見,按值傳遞,不能達(dá)到交換兩個(gè)數(shù)。

按值傳遞: 函數(shù)內(nèi)部使用的參數(shù)稱為形參,是通過拷貝實(shí)參而來,從而對(duì)其進(jìn)行修改,所以,對(duì)原來的實(shí)參不會(huì)造成修改。 

如下圖所示,內(nèi)部變量互不影響。

函數(shù)Swap_err02的編譯結(jié)果:

由結(jié)果可見,換位失敗,其主要原因就是因?yàn)闆]有解引用,過程可看下圖。

函數(shù)Swap_err03的編譯結(jié)果:

由編譯結(jié)果可見,實(shí)行函數(shù)的時(shí)候,編譯器(Visual Studio 2012)報(bào)錯(cuò)了,內(nèi)容是變量tmp沒有被定義,其主要原因是,*tmp為懸掛指針(野指針),野指針:沒有訪問權(quán)限的指針(地址)。

函數(shù)Swap的編譯結(jié)果:

由結(jié)果可見,實(shí)現(xiàn)了兩個(gè)數(shù)換位,解引用之后,將地址內(nèi)的值換位。

其過程如下圖:

注意:子函數(shù)的改變能影響到父函數(shù),一定要傳指針和解引用,兩個(gè)條件缺一不可。

int main ()//父函數(shù)
{
    Fun(&a,&b);//子函數(shù)
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語(yǔ)言基于EasyX實(shí)現(xiàn)貪吃蛇

    C語(yǔ)言基于EasyX實(shí)現(xiàn)貪吃蛇

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言基于EasyX實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)系列篇二叉樹的遍歷

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)系列篇二叉樹的遍歷

    本章將會(huì)詳細(xì)講解二叉樹遍歷的四種方式,分別為前序遍歷、中序遍歷、后續(xù)遍歷和層序遍歷。在學(xué)習(xí)遍歷之前,會(huì)先帶大家回顧一下二叉樹的基本概念
    2022-02-02
  • C++優(yōu)先級(jí)隊(duì)列的使用指南與模擬實(shí)現(xiàn)

    C++優(yōu)先級(jí)隊(duì)列的使用指南與模擬實(shí)現(xiàn)

    優(yōu)先級(jí)隊(duì)列是一種特殊的隊(duì)列,其中每個(gè)元素都有一個(gè)與之關(guān)聯(lián)的優(yōu)先級(jí),優(yōu)先級(jí)較高的元素會(huì)在隊(duì)列中較早地被處理,而優(yōu)先級(jí)較低的元素會(huì)在后續(xù)處理,本文給大家介紹C++優(yōu)先級(jí)隊(duì)列的使用指南與模擬實(shí)現(xiàn),需要的朋友可以參考下
    2023-09-09
  • Qt學(xué)習(xí)之QListWidget控件的使用教程詳解

    Qt學(xué)習(xí)之QListWidget控件的使用教程詳解

    這篇文章主要為大家詳細(xì)介紹了Qt中QListWidget控件的使用教程,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Qt有一定的幫助,需要的可以參考一下
    2022-12-12
  • 深入Main函數(shù)中的參數(shù)argc,argv的使用詳解

    深入Main函數(shù)中的參數(shù)argc,argv的使用詳解

    本篇文章是對(duì)Main函數(shù)中的參數(shù)argc,argv的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言學(xué)習(xí)之關(guān)鍵字的示例詳解

    C語(yǔ)言學(xué)習(xí)之關(guān)鍵字的示例詳解

    關(guān)鍵字,這名字一聽,就很關(guān)鍵。而有些關(guān)鍵字,你可能不是很了解,更別談使用。所以,這篇文章將帶你見識(shí)常見的關(guān)鍵字,一起領(lǐng)略它們的風(fēng)采吧
    2022-10-10
  • C++ 花括號(hào){}初始化小結(jié)

    C++ 花括號(hào){}初始化小結(jié)

    在C++11及以后的版本中,花括號(hào){}語(yǔ)法在不同語(yǔ)境下有不同的用法,本文就詳細(xì)的介紹C++ 花括號(hào){}初始化,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C++基礎(chǔ)入門教程(三):數(shù)組、字符串、結(jié)構(gòu)體、共用體

    C++基礎(chǔ)入門教程(三):數(shù)組、字符串、結(jié)構(gòu)體、共用體

    這篇文章主要介紹了C++基礎(chǔ)入門教程(三):數(shù)組、字符串、結(jié)構(gòu)體、共用體,需要的朋友可以參考下
    2014-11-11
  • C語(yǔ)言運(yùn)算符及其優(yōu)先級(jí)匯總表口訣

    C語(yǔ)言運(yùn)算符及其優(yōu)先級(jí)匯總表口訣

    由于C語(yǔ)言的運(yùn)算符優(yōu)先級(jí)與C++的不完全一樣(主要是增加了幾個(gè)運(yùn)算符),所以這個(gè)口訣不能完全實(shí)用于C++.但是應(yīng)該能夠兼容,大家可以比較一下他們的區(qū)別應(yīng)該就能夠很快掌握C++的優(yōu)先級(jí)的
    2013-07-07
  • 深入解析unsigned int 和 int

    深入解析unsigned int 和 int

    以下是對(duì)unsigned int和int進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08

最新評(píng)論

邛崃市| 富蕴县| 海伦市| 腾冲县| 翁牛特旗| 嘉兴市| 那曲县| 松原市| 玉屏| 科技| 繁昌县| 会泽县| 靖江市| 邻水| 涞水县| 玉树县| 石楼县| 称多县| 宣威市| 太白县| 新源县| 襄汾县| 洪湖市| 米易县| 梁山县| 尉氏县| 美姑县| 康定县| 兴海县| 宜章县| SHOW| 静宁县| 华阴市| 湖北省| 聊城市| 漾濞| 梧州市| 嫩江县| 开化县| 黄浦区| 南陵县|