1、c語言 ,sleep(10); 的頭文件 #include <unistd.h>
2、c所有的庫函數源代碼都位於glibc中,只需要下載glibc包,然后解壓即可,具體下載網址:http://ftp.gnu.org/gnu/libc/,可以下載一個c函數速查chm,隨時查閱庫函數的用法,或者查閱MSDN
3、數據在內存中的存放順序 (變量的地址,最低地址的那個字節)
(1)一個整數類型內部,低地址存儲低位,高地址存儲高位。
(2)若干個局部變量(在棧中存儲的),先定義的高地址,后定義的低地址
(3)類、結構體或數組的元素,先定義的低地址,后定義的高地址
4、memcpy函數源代碼:
1 void *memcpy(void *dst, const void *src, size_t len) 2 { 3 if(NULL == dst || NULL == src){ 4 return NULL; 5 } 6 7 void *ret = dst; 8 9 if(dst <= src || (char *)dst >= (char *)src + len){ 10 //沒有內存重疊,從低地址開始復制 11 while(len--){ 12 *(char *)dst = *(char *)src; 13 dst = (char *)dst + 1; 14 src = (char *)src + 1; 15 } 16 }else{ 17 //有內存重疊,從高地址開始復制 18 src = (char *)src + len - 1; 19 dst = (char *)dst + len - 1; 20 while(len--){ 21 *(char *)dst = *(char *)src; 22 dst = (char *)dst - 1; 23 src = (char *)src - 1; 24 } 25 } 26 return ret; 27 }
5、位段結構體
位段成員必須聲明為int,signed int或unsigned int,在成員名的后面是一個冒號和一個整數,這個整數指定該位段所占用的位的個數。
存儲方式為:第二個位段無法放在第一個位段剩余的位上時,編譯器會把第二個位段放在內存的下一個字節上,在VC 中位段存儲單元的大小是4字節。位段不能跨平台使用。
struct packed { unsigned one:1; //占一位 unsigned two:2; //占二位 unsigned three:3; //占三位 unsigned four:4; //占四位 } data;
6、結構體的內存對齊
1 #include <iostream> 2 using namespace std; 3 4 #pragma pack(1)// 5 struct S1 6 { 7 char C1; 8 int i; 9 char C2; 10 }; 11 12 int main() 13 { 14 cout<<sizeof(struct S1)<<endl; //6(12) 15 return 0; 16 }
7、某些編譯器為空指針使用不存在的內存地址。
8、
9、
10、二級指針傳參創建鏈表

1 #include<stdio.h> 2 #include<stdlib.h> 3 4 typedef struct node 5 { 6 int date; 7 struct node *next; 8 }node; 9 10 void Creatlink(struct node ** tp,int k); 11 int main() 12 { 13 int tmp; 14 struct node *head =NULL,*tail =NULL; 15 head=(struct node *)malloc(sizeof(node)); 16 scanf("%d",&(head->date)); 17 tail=head; 18 while(~scanf("%d",&tmp) && tmp){ 19 Creatlink(&tail,tmp); 20 } 21 tail->next=NULL; 22 for(tail=head;tail;tail=tail->next) 23 printf("%d ",tail->date); 24 return 0; 25 } 26 27 void Creatlink(struct node ** tp,int k) 28 { 29 (*tp)->next=(struct node *)malloc(sizeof(node)); 30 (*tp)->next->date=k; 31 (*tp)=(*tp)->next; 32 }
11、c++ 返回對象引用與返回對象 https://blog.csdn.net/lws123253/article/details/80382401
12、若派生類執行無參構造函數,則其基類必須定義有無參構造函數才能正常執 ,這個說法是錯的,如果基類有默認的構造函數,是不需要定義的。
13、C++ 調用虛函數操作的只能是對象指針或對象引用,否則仍為靜態聯編;
14、在宏定義#define PI 3.14159中,用宏名PI代替一個字符串
15、關系運算符<= 與 == 的優先級不相同。
16、在C程序中,可以將整型數以二進制形式存放到文件中的函數是fwrite()
17、fread(buffer,size,count,fp);其中的buffer代表的是一個指針,指向要存放讀入數據的地址
18、http://forspeed.onlinedown.net/down/126disk.com_csf.rar
19、C結構體內不允許有靜態變量,可以用全局變量代替
20、把Microsoft Visual Studio 10.0\VC\bin 下的cvtres.exe 重命名,解決vc2010鏈接錯誤(電腦中的版本高)
21、C++在new時的初始化的規律可能為:對於有構造函數的類,不論有沒有括號,都用構造函數進行初始化;如果沒有構造函數,則不加括號的new只分配內存空間,不進行內存的初始化,而加了括號的new會在分配內存的同時初始化為0。
22、給定有n個結點的向量,建立一個有序單鏈表的時間復雜度 O(n^2)
23、在一個單鏈表HL中,若要向表頭插入一個由指針p指向的結點,則執行p->next = HL; HL = p;
24、將兩個各有n個元素的有序表歸並成一個有序表,在最壞的情況下,其比較次數是 2n-1
25、對順序存儲的線性表,設其長度為n,在任何位置上插入或刪除操作都是等概率的。插入一個元素時平均要移動表中的 n/2 個元素。
26、在一個長度為n的線性表中順序查找值為x的元素時,查找時的平均查找長度(即x同元素的平均比較次數,假定查找每個元素的概率都相等)為(n+)/2
27、dumpbin.exe D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
28、LIB和DLL的區別與使用 https://www.cnblogs.com/zkwarrior/p/10948174.html
29、單鏈表,刪除指針指向的結點,通過復制后繼結點的數據的方式,實現刪除:設指針變量p指向單鏈表中結點A,若刪除單鏈表中結點A,則需要修改指針的操作序列為:q=p->next;p->data=q->data;p->next=q->next;free(q);
30、m行n列的矩陣,非零項個數為t, t / (m*n) <= 0.3 的矩陣為稀疏矩陣。
31、三種特殊矩陣:上三角,下三角矩陣,帶狀矩陣(采取順序存儲);稀疏矩陣(采取三元組順序存儲,十字鏈表鏈式存儲,都不可隨機訪問)。
32、下三角矩陣存儲元素地址計算公式 :loc(i,j) = loc(1,1) + ( i*(i-1)/2 + j -1 )*size (等差數列)
33、上三角矩陣存儲元素地址計算公式 :loc(i,j) = loc(1,1) + ( (i-1)*(2*n-i+2)/2 + j -i )*size,(等差數列)n為矩陣列數
34、帶狀矩陣存儲元素地址計算公式:loc(i,j) = loc(1,1) + ( 2+3*(i-2) + j -i+1)*size,
35、十字鏈表定義(行鏈表,列鏈表組成)
//十字鏈表結點定義 typedef struct OLNode { int row,col; //行,列 ElemType value; struct OLNode *right, *down;//行列指針 }OLNode, *OLink; //十字鏈表定義 typedef struct { OLink *row_head, *col_head; //行列鏈表頭指針數組 int m, n; //m行,n列 }CrossList;
36、具有n片葉子的完全二叉樹共有2個
37、通過先序遍歷可以刪除二叉樹中所有的葉子結點。
38、完全二叉樹,可由其先序序列唯一確定,完全二叉樹,可由其中序序列唯一確定,滿二叉樹,可由其后序序列唯一確定
39、含3個結點的普通樹的樹形共有2種
40、假定一棵三叉樹的結點數為50,則它的最小高度為5: 結點數相同而高度最小的三叉樹是滿三叉樹或完全三叉樹(深度為h的三叉樹,若前面h-1層是滿的,只有第h層從右邊連續缺若干個結點的三叉樹稱為完全三叉樹)。根據完全二叉樹的性質4 (即具有n個結點的完全二叉樹,其深度h=[log2n]+1),可推得三叉樹的相應性質,即具有n個結點的完全三叉樹,其深度h = [log3n]+1。故具有50個結點的三叉樹,其最小高度為[log350]+1=5。
41、在哈夫曼樹中,若編碼長度只允許小於等於4,則除了已確定兩個字符的編碼為0和10外,還可以最多對 4 個字符進行編碼。1100 1101 1110 1111
42、判斷:一棵二叉樹中,中序遍歷序列的最后一個結點,必定是該二叉樹前序遍歷的最后一個結點。(錯,右子樹有左子樹不一樣)