原创 使用動態內存分配的通訊錄實現

實現一個通訊錄; 通訊錄可以用來存儲1000個人的信息,每個人的信息包括: 姓名、性別、年齡、電話、住址 提供方法: 1. 添加聯繫人信息 2. 刪除指定聯繫人信息 3. 查找指定聯繫人信息 4. 修改指定聯繫人信息 5. 顯示所有聯繫

原创 C語言字符串操作符的解讀,模擬

我們平時寫代碼對字符進行操作時,常常會用到庫函數裏的字符操作符,那這些庫裏的操作符究竟是怎麼計算的,現在我們來對這些庫函數進行剖析,並且來模擬實現一下 常見的庫函數字符串操作符 1、strcmp 2、strcpy 3、strcat 4

原创 C程序下的三子棋

還記得小時候一下課就用石子和同學在地上玩的三子棋嗎?接下來我們一起來做一個模擬遊戲來玩一下! 如果要用代碼來寫,應該怎麼寫呢? 思維邏輯: 1、打印個開始菜單 2、進入遊戲 3、先打印一張棋盤 4、玩家先下或者電腦先下 5、不管誰下一步

原创 單鏈表常見面試題(基礎篇)

1.比較順序表和鏈表的優缺點,說說它們分別在什麼場景下使用? 2.從尾到頭打印單鏈表 3.刪除一個無頭單鏈表的非尾節點 4.在無頭單鏈表的一個節點前插入一個節點 5.單鏈表實現約瑟夫環 6.逆置/反轉單鏈表 7.單鏈表排序(冒

原创 一維數組和二維數組的運算(sizeof與strlen的區別)

在數組運算前,先了解一下數組的解引用到底是怎麼回事。 #include <windows.h> #include <stdio.h> int main() { int arr[] = {1,2,3,4,5,6,7,8,9,0}; p

原创 管道實現進程間通信

一、 實現進程間通信最簡單的方式就是通過管道機制來實現,管道是一種最基本的IPC機制,由pipe函數創建。pipe所創建的管道實際上是在內核中開闢一塊緩衝區,它有一個獨端和寫段,通過read和write來實現往管道里寫和讀,由於管道是通過

原创 進程間通信-信號量

信號量實質上是一個用來描述臨界資源數目的計數器。本身不具有數據交換的功能,而是通過控制其他的通信資源(文件,外部設備)來實現進程間通信,它本身只是一種外部資源的標識。信號量在此過程中負責數據操作的互斥、同步等功能。 當進程不再使用一個信

原创 C程序下的深度冒泡排序

深度冒泡排序(元素從小到大排序) 例如:arr[ ]裏的元素爲    9  5  6  8  4  3  1  7  2 在第一次排序時,先比較前兩個元素的大小,如果第一個元素大於第二個元素則兩個交換,繼續比較第二個和第三個。

原创 順序表的動態內存實現

線性表的順序存儲結構就是,把線性表中的所有元素按照其邏輯順序依次存儲在計算機存儲器中指定存儲位置開始的一塊連續的存儲空間中。因此,線性表的順序存儲結構是利用數組來實現的,數組的基本類型就是線性表中元素的類型。 實現一個順序表首先要制定一個

原创 數組與指針的理解

在我們平時寫程序的時候,在調用函數傳遞一個數組時,經常用到的是用一個對應的數組或者指針來接受。那麼,是不是就可以理解爲數組等於指針,指針就等於數組,我們來做一個小實驗來驗證一下看是不是數組就等於指針 #define _CRT_SECUR

原创 C語言下程序的堆棧調用(詳細,圖示)

以前接觸程序時,只知道程序寫的對,一般都能運行出來,但是卻不知道程序是怎麼一步一步將每一步編譯鏈接起來的,今天我們用匯編來看一下程序到底是怎麼在程序中運行的。 #include <stdio.h> int Add(int x,int y)

原创 數據結構——單鏈表

前面介紹了順序表的特點和實現!但是順序表有很多的不足,比如要給順序表的前面插入一個數據,就必須先把後面的數據先一個一個的往後挪動,然後再將所要插入的數據放進去。就相當於一個數組一樣。 還有就是順序表的大小分配,如果採用靜態分配內存的方式

原创 Linux的粘滯位

什麼是粘滯位?設置粘滯位和不設置粘滯位有什麼區別呢? 粘滯位是在1974年Unix的第5版中引入的,用來設置可執行文件。當可執行文件設置粘滯位之後,它能夠指示操作系統在程序退出後,保留程序的代碼段到swap空間。當程序再次執行時,內核只

原创 CenOS6.5連不上外網解決方法

在CenOS下,很多人把網絡配置正確後能夠ping通自己的主機和域名,但是卻不能ping通外網,像ping www.baidu.com 、ping 8.8.8.8 、 ping 114.114.114.114 這類的公網和域名,下來我寫一