美文网首页
C语言-1、基本数据类型、指针、函数

C语言-1、基本数据类型、指针、函数

作者: 喂_balabala | 来源:发表于2022-06-23 20:02 被阅读0次
    头文件
    <stdio.h> // C99 标准库
    // <> 寻找系统的资源
    // “” 寻找我们自己写的资源
    // .h .hpp(声明文件 头文件)
    // .c  .cpp (实现文件)
    
    基本数据类型
    boolean 非0即true, 0就是false
    
    int i = 100;
    double d = 200;
    float f = 200;
    long l = 100;
    short s = 100;
    char c = 'd';
    // 字符串
    char * str = "aaa";
    
    // 不是随便打印的,需要占位
    printf("i的值是:%d\n", i); // d == 整形
    printf("d的值是:%lf\n", d); // lf == long float
    printf("f的值是:%f\n", f); // f == float
    printf("l的值是:%d\n", l); // d == 整形
    printf("s的值是:%d\n", s); 
    printf("c的值是:%c\n", c); // c == char
    printf("字符串:%s\n", str); // s == String
    
    printf("char 数据类型所占的字节数:%d\n", sizeof(char));// 1
    printf("short 数据类型所占的字节数:%d\n", sizeof(short));// 2
    printf("float 数据类型所占的字节数:%d\n", sizeof(float));// 4
    printf("int 数据类型所占的字节数:%d\n", sizeof(int));// 4
    printf("long 数据类型所占的字节数:%d\n", sizeof(long));// 4
    printf("double 数据类型所占的字节数:%d\n", sizeof(double));// 8
    
    //1字节(Byte)=8字位=8个二进制数
    //1字位(bit)=1个二进制数
    //1B=8b
    //1KB=1024B
    //1MB=1024KB
    //1GB=1024MB
    
    if (0) {
        printf("真\n");
    } else {
        printf("假\n");
    }
    
    if (43665) {
        printf("真\n");    
    } else {
        printf("假\n");   
    }
    
    if (-545) {
        printf("真\n");   
    } else {
        printf("假\n");  
    }
    
    NULL
    return NULL; // NULL == 0
    

    指针(%p、&、*)

    // Java 万物皆对象
    // C C++(对象) 万物皆指针
    // Linux 万物皆文件
    
    // %p == 地址输出的占位
    // & == 取出地址
    // * == 取出指针对应的值
    int number1 = 100000;
    printf("此number1变量的地址是:%p\n", &number1);
    
    int number_int = 100;
    double number_double = 200;
    printf("number_int的值是:%d\n", number_int);
    printf("number_double的值是:%lf\n", number_double);
    
    // * == 取出number_int地址所对应的值 == 100
    // 指针取出值
    printf("number_int的值是:%d\n", *(&number_int));
    printf("number_double的值是:%lf\n", *(&number_double));
    
    
    //   ================   难度
    
    int * intP = &number_int;
    double * doubleP = &number_double;
    
    // 输出 100  和 200
    printf("number_int的值是:%d\n", *intP);
    printf("number_double的值是:%lf\n", *doubleP);
    
    指针大小
    • 指针占用的内存大小是? int double xxx 的指针 永远都是 4个字节(32) 4*2(64)

    • 指针类型有何用?。 既然都是 4个字节,为什么还要分 指针类型

    • 答:取值的时候才知道怎么取(比如数组取值的时候知道类型才知道下一个元素要取多少个字节),这就是类型规定的好处

    多级指针的核心是:指针存放的是地址,但是指针本身也有地址

    函数
    Main函数要不要返回,跟工具有关系
    
    C代码是从上往下查找的,如果函数写在main函数下方,要先声明
    
    // C语言不允许函数重载
    // 由于C语言不支持函数重载,所以声明的函数,不需要写参数
    void changeAction();
    
    
    

    Question

    • 为什么 main函数 和 update 函数 i 的内存不地址一样?
    void update(int * i) {
        // 形参i是一个新的变量,然后对这个新的变量赋值,所以和mian函数中传过来的i的内存地址是不一样的
        // printf("update函数,i的内存地址是:%p\n", &i); // 2000H
        printf("update函数,指针i的指向的值是:%p\n", i); // 1000H
        * i = 999;//这句含义是取出内存地址1000H对应的值 并把这个值赋值为999
    }
    
    int main1() {
        int i = 100; // 1000H的内存地址
        update(&i);
        printf("main函数,i的内存地址是:%p\n", &i);
        printf("main函数,i的值是:%d\n", i);
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:C语言-1、基本数据类型、指针、函数

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