美文网首页
C_Cpp-C语言回顾

C_Cpp-C语言回顾

作者: lioilwin | 来源:发表于2017-08-27 16:22 被阅读15次

    一.数据类型及长度

    1.java(虚拟机平台,数据长度固定) 
        byte short int long float double char boolean
         1    2     4    8    4      8     2  不确定(4或1) 
    
    2.C语言(不同平台数据长度不同)
        char short int long float double
          1   可用sizeof获取数据长度
        signed(默认) unsigned
        
        枚举
        enum WeekDay{
            Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
        };
        enum WeekDay wd = Sunday;
        printf("%d\n",wd);
        
        联合体
        union mix{ 
            double d; int i; char c; 
        };
        在Union中,所有成员不能同时存在,总长度等于最长成员的长度
        
        结构体
        struct date { 
            double year;int month;char day; 
        };      
        在struct中,各成员同时存在,总长度等于所有成员之和    
    

    二.输入输出

    #include <stdio.h> // 输入输出库
    #include <stdlib.h>
    system("java hello");// 调用系统命令,执行java代码
    system("pause");// 调用系统命令,让控制台暂停
        
    1.输出
        %hd short half d 
        %d  int
        %ld long int
        %f  float
        %lf double  long float 
        %u  无符号数
        %x  十六进制
        %o  八进制
        %c  char
        %s  字符串
        int i=3;
        printf("int =%d\n",i);
        
    2.输入
        int i;
        char c[3];
        scanf("%d",&i);
        scanf("%s",c);
    

    三.指针

    1.指针代表内存地址  
    指针变量 存放内存地址的变量  
    *含义 
        1.乘法   
        2.指针变量类型 int* p;
        3.指针变量取值 *p = 2;
        
    2.指针常见错误 
        1不给指针变量赋值,直接用,野指针 int* p; *p =2;
        2指针类型和赋值类型不匹配 float f; int* i=&f;
                
    3.指针和数组
        数组元素在一块连续内存中 
        数组变量对应数组首元素地址 int a[3]; a=&a[0];
        char* c="HelloWorld" 表示字符串char c[]="HelloWorld";
    
    4.多级指针
        int i=3;
        int* p1=&i;
        int** p2=&p1;
        int*** p3=&p2;  
    
    5.函数指针
        int add(int x,int y){    
            return x+y;
        }
        int (*f)(int x,int y);
        f=add;
        f(3,5); 
    

    四.内存分配

    data区 常量池  
    code区 存放代码 main()等等
    栈区 静态自动分配和释放 连续分配
    堆区 动态手动分配和释放 不连续分配(链表)
        malloc() 手动分配内存 memorry alloc
        free() 手动释放内存
        
    int* p=(int*)malloc(sizeof(int)); //手动分配内存
    *p=3;
    free(p);  //手动释放内存
    

    简书: http://www.jianshu.com/p/b35971db05df
    CSDN博客: http://blog.csdn.net/qq_32115439/article/details/72455747
    GitHub博客:http://lioil.win/2017/05/17/C_review.html
    Coding博客:http://c.lioil.win/2017/05/17/C_review.html

    相关文章

      网友评论

          本文标题:C_Cpp-C语言回顾

          本文链接:https://www.haomeiwen.com/subject/dcgvdxtx.html