C/C++闲散知识点(未完待续)

1.

  int *p1 = new int[10];

  int *p2 = new int[10]();

   p1申请的空间里的值是随机值,p2申请的空间里的值已经初始化

2.指针函数,函数指针,指针数组,数组指针

根据后边的定义,例如指针函数是函数,函数指针是指针。

优先级顺序:()>[]>*

指针函数本质是一个函数,而该函数的返回值是一个指针。

类型标识符* 函数名(参数表)

int* fun(int x,int y);

函数指针本质是一个指针变量,该指针指向这个函数。

类型说明符 (*函数名) (参数)

int (*fun)(int x,int y);

指针数组根据优先级,先看[],则p是一个数组,再结合*,这个数组的元素是指针类型,共n个元素,这是“指针的数组”,即指针数组*p[n]
数组指针根据优先级,先看括号内,则p是一个指针,这个指针指向一个一维数组,数组长度为n,这是“数组的指针”,即数组指针(*p)[n]
  • 回调函数是一个通过函数指针调用的函数
  • 如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。
  • 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外一方调用的,用于对该事件或条件进行相应。

3.typedef 多种用途

1.给已定义的变量类型重命名,比较常用的就是:
typedef unsigned char uint8_t
typedef unsigned char u8

typedef struct student
{
    char name[10];
    u8 age;
}student_t;

声明:student_t stu_1;


2.定义数组类型
typedef int arr_t[10];//定义数组类型,10个int的一维数组。
声明:arr_t a1, a2, a3;


3.定义数组指针类型
typedef int (*pArr_t)[10];//定义指针类型,该类型的指针指向10个int的一维数组。
声明:pArr_t p1, p2, p3;


4.定义函数指针类型
//定义函数指针类型,该指针指向返回值为void 形参为const char *uuid、char *data、int len。
typedef void (*pFun_t)(const char *uuid, char *data, int len);

声明:
void Func_A(const char *uuid, char *data, int len)
{
    ...
}
pFun_t Handler = Func_A;

  4.宏的多种用途

1.参数替换
#define ARRAY_SIZE 10

2.函数替换
#define MAX(a,b) ((a)>(b)?(a):(b))

3.字符串拼接
#define CONCAT(str1,str2) str1 ## str2

4.条件编译
#ifdef #ifndef
#if #endif

5.多行代码
#define FUNC \
    printf("Hello\r\n");\
    printf("world !\r\n");

6.递归调用
#define FIB(n) ((n) <= 1 ? (n) : FIB(n-1) + FIB(n-2))

7.类型转换
#define INT_TO_U8(i) ((u8)(i))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chinalihuanyu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值