C語言之旅(9)遞迴 函式指標 巨集 列舉 位運算

2021-08-10 21:12:45 字數 1058 閱讀 9467

接下來我們要講幾個小的知識點:

遞迴:程式呼叫自身的程式設計技巧稱為遞迴。這樣說有點籠統了不容易理解,下面我們來做實驗。

最後在是1*2*3*4*5這樣運算處120返回出去,函式呼叫結束,這就是遞迴函式的原理,你可以自己操作一下試試就看出來了。

函式指標:別看到這個名字就害怕,函式指標也是指標,也就是乙個變數而已,就是乙個名字,怕鳥。例如:void sort(int a);這是乙個函式,那麼這個函式的指標怎麼表示呢,函式這種形式其實和普通的變數沒什麼差別,sort也是變數,只不過這個變數儲存的是乙個位址罷了而且是自身的位址。這個變數的型別是什麼的,就像我前面說的去掉名字sort,剩下void (int a)就是這個函式的型別,所以說這個函式的返回值是乙個void型別的,指向的引數是int型別的。那麼指標函式就好說了,把變數名去掉換成*fp就行了。所以是void (*fp)(int);這個就是指標函式。當然對於fp應該儲存void (int)型別的函式位址。

根據上圖自己敲一遍通過下斷點自己看就知道了。

巨集:什麼是巨集,巨集說白了就是單純的替換,僅此而已。#號實在預編譯階段執行的,預編譯階段是編譯程式的第乙個階段,他會把所有的#後面的"include"載入的標頭檔案全部載入過來,還會把#define巨集中的識別符號全部替換成他要替換的東西,例如:#define a_b 32  對於這段**,編譯器會把原始檔中的所有a_b都會替換成32.這就是巨集的作用,他沒有絲毫自己的意見,就是單純的替換(請記住這句話)。列舉 格式:enum myenum ;這就是列舉,列舉就相當於給乙個集合起了乙個名字一樣。以後我們就可以通過這個名字去取集合中的任何數值。例如:enum myenum a;a就可以也只能等於:石頭,剪子,布其中的乙個。如果我們沒有定義的話,那麼石頭就相當於0.剪子是10的話,布就是11,沒啥好說的。

位運算:

《左移   >>右移

左移的時候末尾直接添0,右移的時候如果沒有符號前面添0,有符號新增符號位。

C語言 之遞迴函式

今天來總結一下關於遞迴函式的使用方面的問題。遞迴函式就是在函式使用的時候自己呼叫自己,層層呼叫,來實現你想要的功能。有兩個最常用的例子,我們來寫一下。1 計算階乘 include int factorial int n 函式宣告 階乘 int main void int a 5 printf d的階...

C語言之旅(1)指標

指標是什麼?指標是變數。指標是幹什麼用的?指標是儲存位址的。指標佔多少個位元組?對於32位系統來說是4個位元組,對於64位系統來說是8個位元組,當前大多數用的還是32位系統。這裡面說的系統不是計算機的作業系統,而是計算機架構的定址能力。對於32位系統來說計算機的位址用8位16進製制數表示。因為一位1...

C語言奇妙之旅 指標函式

指標函式是指帶指標的函式,即本質是乙個函式,函式返回型別是某一型別的指標。例子 程式功能 指標函式 程式版本 v0.1.00 include int f int i,int j 定義了乙個指標函式 函式指標是指向函式的指標變數,即本質是乙個指標變數。例子 include void function ...