原创 宏定義與條件編譯的用處

   #define     定義宏     #undef      取消已定義的宏     宏定義常量與命令可以避免幻數 在宏定義命名時候應該儘量清楚表明其用途。 函數型宏定義的有點:儘管其和真正的函數相比有很多缺點,但只要小心使用還是

原创 c語言初學--計算字符串中數字的最大長度並提取 以及輸入兩個子串 提取分別以這爲開頭和結尾的字符串

計算字符串中數字的最大長度並提取 提取以輸入子串爲開頭和結尾的字符串

原创 typedef與#define的區別

#define是預處理指令,在編譯預處理時進行簡單的替換,不作正確性檢查,不關含義是否正確照樣帶入,只有在編譯已被展開的源程序時纔會發現可能的錯誤並報錯。 也許您已經注意到#define 不是語句 不要在行末加分號,否則 會連分號一塊置

原创 單片機之初步瞭解

單片機四個P口的作用: P0口有二個功能:  1、外部擴展存儲器時,當做數據/地址總線 2、不擴展時,可做一般的I/O使用,但內部無上拉電阻,作爲輸入或輸出時應在外部接上拉電阻。 P1口只做I/O口使用:其內部有上拉電阻。 作爲輸入口

原创 對單詞的逆序

以i from shanghai爲例 輸出 shanghai from i#include <stdio.h> #define MAX_SIZE 1024 void reverse_string(ch

原创 C語言初學--對全局變量和局部變量的理解

首先 在這之前我們應該要知道進程虛擬空間: 系統程序中訪問的內存地址不是實際的物理內存地址,而是一個虛擬地址,然後由操作系統將這個虛擬地址映射到適當的物理內存地址上。 系統給了我們4個g的虛擬地址空間 其中一個1個g給了內核 3個g給了我

原创 C語言初學--對變量的認識

變量類型:int              - 4字節(1字節=8bit)                     short         -2字節      float       -4字節                    

原创 函數的一些小知識

當我們在調用函數時候我們應該知道系統一共進行了哪些操作 1.通過函數名找到函數的入口地址(函數名是一個指針常量 保存函數的地址) 2.給形參分配空間 3.傳值:把實參變量對應空間的值傳遞給形參變量的對應空間 4.執行函數體語句 5.函數返

原创 C語言初學---對位運算符的認識

位與運算: “&”是雙目運算符 其功能是參與運算的兩個數字對應的二進制位相與 ,只有對應的兩個二進制均爲1時 結果位才爲1 ,否則爲0 ,參與運算的數以補碼方式出現 例如 9 & 5       0000 1001 & 0000 0101

原创 用輾轉相除法求最大公約數和最小公倍數 並用這求兩個分數間的大小

求最大公約數和最小公倍數#include <stdio.h> int main() {     int num_1;     int num_2;     int a = 0;     int b = 0;     int tem

原创 關鍵字的作用

1.我們知道局部變量是存放在棧區的,如果用static修飾的話 ,變量就會存放在靜態數據區,生命週期延長到了整個程序執行結束。 那麼修飾的是全局變量呢? 這個和修飾函數名時作用一致,只能在本文件中訪問不能再其他文件中訪問,函數只能在本文中

原创 對複合數據類型的細節瞭解

1 結構體 作用:在編程中我們經常要傳送的不是簡單的字節流(char型)而是多種數據結合起來的一個整體,其表現形式是一個結構體 注意事項:在結構體中定義多個數據類型時 ,如果最大的數據類型>=4字節 統一以“字”爲對齊,<4以“半字”對齊

原创 避免野指針的方法--養好良好的編程習慣

首先 我們需要來了解什麼是野指針:未初始化的指針,系統給了一個隨機地址 導致了內存泄露的錯誤 這也是最常見的段錯誤之一。 避免野指針的方法最好就是養成良好的編碼習慣: 1: 當指針沒有指向的時候 令其指向空 char   *p = NU

原创 對i++和++i的理解

i++  先使用後增加 ++i  先增加後使用 實際上這我們需要對這兩句話做點補充 先使用等到語句結束時候再增加 對++i同樣是這樣 我們最熟悉的結束標誌莫過於“;”了 不過還有其他兩種 “,’”  與 函數的括號 舉幾個簡單的例子; 簡

原创 scanf的一些小細節

格式字符串 格式字符串的一般形式爲:    %[*][輸入數據寬度][長度]類型其中有方括號[]的項爲任選項。各項的意義如下。1) 類型表示輸入數據的類型,其格式符和意義如下表所示。 格式 字符意義 d 輸入十進制整數 o 輸入八進制