国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C基礎:交換a、b值較好的方法?

工程師 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2020-10-16 11:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

交換a、b的值在C語言的學習中是很常見的問題。最常用的方法就是引入一個中間變量當做中間介質來交換a、b的值。

代碼如下:

void change_ab(int *a, int *b){ int temp = 0; temp = *a; *a = *b; *b = temp;}

!!注意不能寫為:

void change_ab(int a, int b){ int temp = 0; temp = a; a = b; b = temp;}

普通的變量傳遞,則不會改變內存內容,以為普通變量作為參數時,其實是在內存塊(棧空間)中新申請了一塊空閑塊,不是原來的內存塊,而函數調用完畢之后,這塊新申請的內存塊會由于變量的作用域失效而被系統回收。

如果把指針作為實參進行傳遞,也就是把內存地址傳了過去,那么操作這個指針所指向的內存塊,必然會改變這個內存的內容了。

以上這種方法就是最常見的方法。那么,你知道如何將a、b的值進行交換,并且不使用任何其他的中間變量?

方法一:采用算術的方法

void change_ab(int *a, int *b){ *a = *a + *b; *b = *a - *b; *a = *a - *b;}

方法二:采用異或的方法

void change_ab(int *a, int *b){ *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b;}

方法一存在一個潛在的危險,當形參的類型改為無符號16位時,若a、b的值很大,那么a+b的值就有可能超出16位整數所能表示的范圍,從而造成程序運行錯誤。方法二則沒有這個問題,這是一種比較好的方法。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    183

    文章

    7644

    瀏覽量

    145598
  • 編程
    +關注

    關注

    90

    文章

    3716

    瀏覽量

    97188
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    PCA9545A/45B/45C:4通道I2C總線開關的深度解析

    PCA9545A/45B/45C:4通道I2C總線開關的深度解析 在電子工程師的日常設計工作中,I2C總線開關是實現多設備通信和信號切換的重
    的頭像 發表于 02-10 11:50 ?400次閱讀

    探索Microchip 93XX56A/B/C系列2Kbit串行EEPROM

    探索Microchip 93XX56A/B/C系列2Kbit串行EEPROM 在硬件設計的領域中,非易失性存儲器是不可或缺的組成部分。Microchip的93XX56A/
    的頭像 發表于 02-10 10:40 ?813次閱讀

    PCA9543A/43B:2通道I2C總線開關的全面解析

    PCA9543A/43B:2通道I2C總線開關的全面解析 在電子設計領域,I2C總線開關是實現多設備通信和總線管理的關鍵組件。NXP的PCA9543
    的頭像 發表于 02-02 10:45 ?342次閱讀

    深度解析SPL階段A/B分區啟動:spl_ab.c代碼全拆解

    ( Secondary Program Loader ,二級程序加載器)作為系統啟動的早期階段,負責初始化硬件、選擇啟動分區, spl_ab.c 正是 SPL 層處理 A/B 分區啟動的核心代碼。本文將從函數
    的頭像 發表于 01-20 07:07 ?9594次閱讀
    深度解析SPL階段<b class='flag-5'>A</b>/<b class='flag-5'>B</b>分區啟動:spl_ab.<b class='flag-5'>c</b>代碼全拆解

    德州儀器LM5100A/B/C和LM5101A/B/C系列高壓柵極驅動器的深度解析

    德州儀器LM5100A/B/C和LM5101A/B/C系列高壓柵極驅動器的深度解析 在電源電路設
    的頭像 發表于 01-11 18:05 ?1075次閱讀

    高壓柵極驅動器LM5100A/B/C和LM5101A/B/C:設計與應用詳解

    高壓柵極驅動器LM5100A/B/C和LM5101A/B/C:設計與應用詳解 在電子電路設計中,
    的頭像 發表于 01-11 17:55 ?1055次閱讀

    深入剖析LM5100A/B/C與LM5101A/B/C高壓柵極驅動器

    深入剖析LM5100A/B/C與LM5101A/B/C高壓柵極驅動器 引言 在電子設計的領域中,
    的頭像 發表于 01-11 17:55 ?1054次閱讀

    Texas Instruments LM5100A/B/C和LM5101A/B/C高壓柵極驅動器深度解析

    Texas Instruments LM5100A/B/C和LM5101A/B/C高壓柵極驅動器
    的頭像 發表于 01-11 17:45 ?1082次閱讀

    深度剖析LM5100A/B/C與LM5101A/B/C高壓柵極驅動器

    深度剖析LM5100A/B/C與LM5101A/B/C高壓柵極驅動器 在電子設計領域,高壓柵極驅
    的頭像 發表于 01-11 17:45 ?1083次閱讀

    深入剖析LM5100A/B/C和LM5101A/B/C高壓柵極驅動器

    深入剖析LM5100A/B/C和LM5101A/B/C高壓柵極驅動器 作為一名電子工程師,在設計
    的頭像 發表于 01-11 17:40 ?1031次閱讀

    三星0603貼片104電容電壓怎樣識別?

    CL10B104KB8NNNC。其中,電壓由特定位置的字母或數字組合表示: 字母代碼對應電壓 電壓常用單個字母標注,對應關系如下: A
    的頭像 發表于 09-25 18:02 ?1098次閱讀
    三星0603貼片104電容電壓<b class='flag-5'>值</b>怎樣識別?

    請問ISM 交換機如何恢復出廠

    請問ISM 交換機如何恢復出廠
    發表于 08-07 06:35

    Analog Devices / Maxim Integrated MAX98363 (A/B/C/D) 開發板數據手冊

    Analog Devices MAX98363 (A/B/C/D) 開發板經過完全組裝和測試,可評估MAX98363放大器。MAX98363A / MAX98363
    的頭像 發表于 06-16 15:53 ?976次閱讀
    Analog Devices / Maxim Integrated MAX98363 (<b class='flag-5'>A</b>/<b class='flag-5'>B</b>/<b class='flag-5'>C</b>/D) 開發板數據手冊

    網線面板接法是a還是b

    網線面板的接法通常推薦使用 T568B 標準(即“B 類”接法),但在特定情況下也可采用 T568A 標準(“A 類”接法)。以下是具體分析和建議: 1. T568
    的頭像 發表于 06-10 09:50 ?9215次閱讀

    LM5100B 具有 8V UVLO 和 CMOS 輸入的 2A、100V 半橋柵極驅動器數據手冊

    LM5100A/B/C 和 LM5101A/B/C 高壓柵極驅動器設計用于驅動 采用同步降壓或半
    的頭像 發表于 05-21 13:37 ?733次閱讀
    LM5100<b class='flag-5'>B</b> 具有 8V UVLO 和 CMOS 輸入的 2<b class='flag-5'>A</b>、100V 半橋柵極驅動器數據手冊