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;
网友评论