原创 qsort( )使用和實現

qsort() 的頭文件是: #include < stdlib.h > 函數原型: void __cdecl qsort (void * base, size_t num ,size_t width, int ( __

原创 騰訊筆試—— 小 Q 的歌單 【 題目描述】小 Q 有 X 首長度爲 A 的不同的歌和 Y 首長度爲 B 的不同的歌,現在小 Q 想用這些歌組成一個 總長度正好爲 K 的歌單,每首歌最多隻能在歌單中

小 Q 的歌單 【 題目描述】小 Q 有 X 首長度爲 A 的不同的歌和 Y 首長度爲 B 的不同的歌,現在小 Q 想用這些歌組成一個 總長度正好爲 K 的歌單,每首歌最多隻能在歌單中出現一次,在不考慮歌單內歌曲的先後順序的情況

原创 宏,將一個數字的奇數位和偶數位交換

用宏定義的方式,將一個數的二進制形式數的奇偶位進行交換。 其實非常簡單,步驟如下: 1.先將這個數左移一位,然後與0xAAAAAAAA相與,此時就保存了奇數位。 2.再將這個數右移一位,然後與0x55555555

原创 C/C++註釋轉換

將 / * … * / 註釋轉換爲 / / 註釋。 transform.h #ifndef __transform_h__ #define __transform_h__ #define MY_INPUT "input.c

原创 指針數組/數組指針

指針數組: 指針數組是數組,是一個存放指針的數組。 這裏的a[4]就是一個指針數組,其中各元素的類型都是int*。 數組指針: 數組指針是指針,這個指針指向一個數組。 這裏的P是一個指針,指向一個內部元素類型爲in

原创 轉移表

要理解轉移表,先要了解函數指針數組。 函數指針數組的說明:函數指針數組 先看代碼: void print_menu() { printf("***************************************

原创 簡單用宏定義實現max(a,b)

求兩個數的較大值,我們很容易用函數實現,其實當用宏定義實現時更加方便快捷,舉個例子: #include <stdio.h> #define MAX(a,b) (((a)>(b))?(a):(b)) int main()

原创 使用main函數的參數,實現一個整數計算器

使用main函數的參數,實現一個簡單的整數計算器,具有整數加,減,乘,除運算的功能。 首先,我們先來看一下main函數參數是什麼。 main函數有兩種形式: 1. int main(int argc, char

原创 IDEA連接雲服務器MySQL

haha

原创 Linux文件類型

1.普通文件(—) 此種文件中包含某種形式的數據,數據的解釋由處理該文件的應用程序負責 2.目錄文件(d) 包含其他文件的名字和指向與這些文件有關信息的指針 3.字符特殊文件(c) 用於系統中某些類型的設備 4.塊特殊文件(b) 典型

原创 設計模式之八大設計原則

面向對象設計原則: 一.依賴倒置原則(DIP): +高層模塊(穩定)不應該依賴於低層模塊(變化),二者都應該依賴於抽象(穩定)。 +抽象(穩定)不應該依賴於實現細節(變化),實現細節應該依賴於抽象(穩定)。 二.開放封閉原則(OCP)

原创 I/0子系統

一.I/O特點 1.設備接口類型 A.字符設備:鍵盤,鼠標,串口 ——訪問特徵:以字節爲單位順序訪問 ——I/O命令:get(),put();通常使用文件訪問接口和語義 B.塊設備:磁盤驅動器,磁帶驅動器,光驅 ——訪問特徵:均勻的數

原创 errno,perror,strerror怎麼用

errno:在系統出現錯誤時內核把錯誤寫入到變量errno中。在系統調用返回失敗時,必須緊接着引用errno變量,避免程序中的下一條系統調用時出錯覆蓋errno的值。 perror()和strerror():用來打印錯誤提示信息。 p

原创 柔性數組

C99中,結構體中的最後一個元素允許是未知大小的數組,這就叫做柔性數組成員 typedef struct st_type { int i; char a[0]; }type_a; 或者: typedef struct st_t

原创 信號量與管程

基本同步方法: 信號量和管程是操作系統提供的兩種同步方法 多線程併發導致了資源競爭這樣的併發問題,這時候需要協調多線程對共享數據的訪問,要求任何時刻只能有一個線程執行臨界區代碼,也就是同步。確保同步正確的方法有底層硬件上的實現和高層