二、C语言基础

A、指针

指针的概念:指针变量 和 指针 的区别 ?
答:指针变量是指针的标记,也可以通过指针变量的标记操作指针内存地址
指针是具体所指向的内存地址
int * p = 内存地址; p==指针变量 指针==内存地址

# 尽量使用明确类型
    int32_t age = 99;
    printf("age=%d, int32_t-size=%d\n", age, sizeof(age));

    int64_t age2 = 100;
    printf("age2=%d, int64_t-size=%d\n", age2, sizeof(age2));

    int8_t age3 = 101;
    printf("age3=%d, int8_t-size=%d\n", age3, sizeof(age3));

    int16_t age4 = 102;
    printf("age4=%d, int16_t-size=%d\n", age4, sizeof(age4));
1.指针的定义(*:定义指针)
    int* p;
    int * p2;
    int *p3;
2.指针的使用(&:取地址符号)
    int value01 = 5546;
    // 定义一级指针 *指针名称
    int *z = &value01; // 把value01的内存地址获取到,&:取地址符号
    // 输出指针对应的值 * 取出指针内存地址对应的值=5546
    printf("输出value01的值:%d\n", *z);
3.多级指针
    int value01 = 999;
    int *z01 = &value01;
    int **z02 = &z01; // 取出1级指针的内存地址
    int ***z03 = &z02;  // 取出2级指针的内存地址
    int ****z04 = &z03; // 取出3级指针的内存地址
    // 需求:操作 z04 4级指针,取出999
    printf("取值:%d\n", ****z04);

B、函数指针-- 指向函数的指针 就是函数指针

函数要顺序结构

   ##TODO 函数指针 == 指向函数的指针 就是函数指针
    void(*test01)(char*) = myPrintln;
    // 参数一:函数指针实现
    // 参数二:字符串
    // say(test01, "降龙十八掌");
    say(myPrintln, "九阳神功"); // 简写

  ##TODO 为了学习 函数指针
// 整体:void(*aa)(char*)
// void == 函数的返回,  (*onShowAction) == 函数的名字
// (char*) == 函数的参数
void say(void(*onShowAction)(char*), char * msg) {
    onShowAction(msg);
}
    // 函数指针的实战
    void(*success)(int64_t responseCode, char * resultInfo) = loginSuccessAction;
    void(*error)(int32_t errorCode, char * errorInfo) = loginErrorAction;
    loginEngine(success, error);*/

// TODO 指针函数 实战 (登录)
void loginEngine(void(*loginSuccess)(int64_t responseCode, char * resultInfo),
            void(*loginError)(int32_t errorCode, char * errorInfo)) {
    bool isLoginOk = 0;
    if (isLoginOk) {
        loginSuccess(200, "登陆成功,欢迎回来....");
    } else {
        loginError(404, "请检查网络再说...");
    }
}

// 登陆成功的具体
void * loginSuccessAction(int64_t responseCode, char * resultInfo) {
    printf("刷新UI操作,code=%d\n", responseCode);
    printf("刷新UI操作,info=%s\n", resultInfo);
}

// 登陆失败的具体
void * loginErrorAction(int32_t errorCode, char * errorInfo) {
    printf("刷新UI操作,code=%d\n", errorCode);
    printf("刷新UI操作,info=%s\n", errorInfo);
}

C、预处理器:指向流程,并不是在编译时期

#if 0
    printf("写法一");
#else if 9
    printf("写法二\n");
#endif
    printf("一定会执行的");

D、宏

// 定义了一个宏
#define DEBUG_MODE

#ifndef RELASE_DEBUG; // n == not 是否没有定义DEBUG_MODE
    printf("配合宏,当前属于Debug模式\n");
#else
    printf("配合宏,当前属于Relase模式\n");
#endif
    printf("一定会执行的");

D、typedef别名

typedef int int32_t;

你可能感兴趣的:(二、C语言基础)