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、判断:一棵二叉树中,中序遍历序列的最后一个结点,必定是该二叉树前序遍历的最后一个结点。(错,右子树有左子树不一样)