zoukankan      html  css  js  c++  java
  • 日记2

    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  }
    View Code

    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.0VCin   下的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.0VCin

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

  • 相关阅读:
    23种设计模式
    Java实现动态代理的两种方式
    jQuery easyui combobox级联及内容联想
    使用Spring MVC统一异常处理
    springmvc下使用kaptcha做验证码
    Hadoop及spark介绍
    jQuery easyui 之 expend row
    Http 1.1协议
    公钥、私钥、CA认证、数字签名、U盾
    SOA架构介绍
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/11771691.html
Copyright © 2011-2022 走看看