嵌入式C語言 swap經典

2021-08-20 15:00:39 字數 618 閱讀 1682

1、形參和實參中的swap

#include

void swap1(int a, int b);

void swap2(int *a, int *b);

int main(void)

void swap1(int a, int b)

void swap2(int *a, int *b)

swap1:

c語言函式呼叫中,實參傳遞給形參實際是傳值呼叫。swap1(a,b),結合以上程式,也就是說,

將實參a和b拷貝乙份傳給swap1中的形參,在子函式中交換的是「拷貝」的a和b,而不是實參

a和b本身,執行過後變數a和b的實際值並未發生交換。

swap2:

c語言函式呼叫時,一直都是傳值呼叫。也就是說實際傳遞的一直都是實參的拷貝

但是本函式中的形參和實參都並不是x和y,而是x和y的位址值。這樣,讓我們在函式中

通過間接訪問*p的方式,在函式內訪問到了函式外面呼叫時的實參。

二、不用中間變數的swap

上次和畢業學姐聚餐的時候,她遇到的一次面試題中有這個問題,也是一道經典面試題稍微總結一下。

1)+-加減法思想

void swap(int *a, int *b)

嵌入式學習(二) 嵌入式系統C 語言

1 從 cpu 復位時的指定位址開始執行 2 跳轉至彙編 startup 處執行 3 跳轉至使用者主程式 main 執行,在 main 中完成 a.初試化各硬體裝置 b.初始化各軟體模組 c.進入死迴圈 無限迴圈 d呼叫各模組的處理函式 下面是幾個 著名 的死迴圈 1 作業系統是死迴圈 2 win3...

嵌入式C語言總結

這幾天花了兩天時間看了一些嵌入式c語言方面的內容,以下是一些讀書筆記,記錄一下。1 不能有返回值 2 不能向isr 傳遞引數 3 isr盡可能的短 4 printf有重入問題 1 中斷服務程式isr 2 硬體初始化 1 某io 晶元被定為在 cpu的儲存空間而非 io空間,而且暫存器對應於某特定位址...

嵌入式c語言優化

一.演算法和資料結構優化 1.針對應用的演算法優化,比如,在音訊編譯碼中,用fft實現時頻變換。2.c語言級別的優化,如排序演算法的選擇。3.資料結構的選擇,如果需要隨機訪問,則盡量選擇陣列,如果需要隨機插入刪除,則可以選擇鍊錶。4.盡量用指標代替資料操作,大部分編譯對於指標會生成更小更快的 5.盡...