發現了一篇非常棒的文檔,直接留下鏈接:
棧: 代碼 1 : stack #include <stdio.h> #include <stdlib.h> //類型 typedef struct node{ int *data; int top; i
代碼 1 : tree #include <stdio.h> #include <stdlib.h> typedef struct node{ int data; struct node * lchild;
變量 : 使用變量時, 必須在變量名前加$ 用戶自定義變量 : 沒有數據類型和存儲類型 直接定義使用, 在定義時必須賦值 在 = 的左右兩端不要出現空格符 如果值出現空格, 需要使用” “ echo $var : 不關心
數據結構練習: 構造一個學生類型 : 姓名, 年齡, 學號, 成績 處理5個學生的數據; 循環輸入學生信息; 找出成績最高的學生, 並且打印其信息(注意:不要排序). 按照成績排序, 並且打印其信息. #include <st
&運算符 指針是 c 語言最重要的概念之一,用於存儲變量的地址。&運算符給出變量的存儲地址,可以把地址看作變量在內存中的位置。 指針 指針是一個值爲內存地址的變量(或數據對象),指針變量的值是地址。 ptr = &pooh
結構含義 結構有兩層含義:一層含義是“結構佈局”,結構佈局告訴編譯器如何表示數據,未讓編譯器爲數據分配空間。創建一個結構變量,即爲另一層含義。 建立結構聲明 #include<stdio.h> struct stuff {
最近在複習C語言,在編程時發現了個問題: #include <stdio.h>
爲了提高編譯和運行速度,或者爲了減少代碼段大小,我們常常需要使用編譯優化。 默認是-O0, 我們可以修改爲-O1, -O2,-Os,-O3等。 但是編譯優化有時候並不一定優化到最佳的效果,或者優化的結果需要某些支持才能正確執行。
const int *a ==》const用來修飾指針a所指向的對象 無法通過指針a來修改其所指向的對象的值 但a這個指針本身的值(地址)是可以改變的,可以指向其他對象 int *const a ==》const用來修飾指針a
如果把一個變量定義爲volatile,相當於告訴編譯器該變量可能隨時被改變,例如被操作系統或硬件改變。 因爲帶有volatile的變量可以在任何時刻改變,該變量的物理地址可能被頻繁的訪問,這就意味着編譯器 不能對這些變量實行優化 相反,
目錄 文章目錄目錄Linux 下的 Socket API 接口創建 Socket綁定 Socket請求建立 Socket 連接監聽 Socket接受請求關閉連接數據的發送和接收send 發送函數recv 接收函數sendto 發送
目錄 文章目錄目錄內存對齊爲什麼要內存對齊?內存對齊跟平臺有關對齊係數使用 pragma 宏指令修改對齊係數內存對齊的原則 內存對齊 計算機的內存空間都是按照字節劃分的,元素(包括:變量、結構體成員、共用體成員)會按照定義的順序一
目錄 文章目錄目錄數組類型強制類型轉換爲結構體結構體之間的強制類型轉換 數組類型強制類型轉換爲結構體 先看一個例子: #include <stdio.h> int main(void) { unsigned char
目錄 文章目錄目錄跳錶 跳錶 跳錶是在雙向鏈表之上加上多層索引構成的,相對於雙向鏈表,支持快速查找,更新,刪除,所以適用於需求靈活的邏輯控制場景。 假設我們現在要查找區間 7- 13 的記錄,就不用從頭開始查找了,只要在上圖中的
大家都知道計算機只能處理和識別二進制指令,而我們利用各種高級編程語言所編寫的程序,要經過一些列的處理步驟,最終轉變爲彙編指令,再最後轉變爲機器指令。 以上這些轉變是如何發生的就屬於大名鼎鼎的“編譯原理”所研究的範疇,作爲計算