#1. 给普通的指针赋值
代码语言:javascript复制int projectCount = 1;
int *intPtr = &projectCount;
#2. 函数的名称就是函数的地址
代码语言:javascript复制int func(int count)
{
return count * 2;
}
int (*funcPtr)(int) = func;
#3. 函数的参数是: 指向函数的指针
代码语言:javascript复制typedef int (*blk_c)(int);
// 3.1 直接方式
int func_para_c (int (*blk_c)(int))
{
return 3;
}
// 3.1 间接方式
int func_para_c_d (blk_c blk)
{
return 3;
}
#4. 函数的参数是: block
代码语言:javascript复制 typedef int (^blk_t)(int); // 定义block变量
// 4.1 直接方式
int func1(int (^blk)(int))
{
return 3;
}
// 4.1 间接方式
int func11(blk_t blk)
{
return 3;
}
#5. 函数的返回值是: 指向函数的指针
代码语言:javascript复制// 5.1 直接方式
int (*func_ret_c())(int) // 其中func_ret_c()是整个函数的骨架.
{
int (*funcPtr)(int) = func;
return funcPtr;
// return func; 也可以直接返回函数的名称作为地址
}
// 5.2 间接方式
blk_c func_ret_c_d()
{
return func;
}
#6. 函数的返回值是: block
代码语言:javascript复制 // 6.1 直接方式
int (^func_ret_t())(int)
{
return ^(int count){return count * 2 ;};
}
// 6.2 间接方式
blk_t func_ret_t_d()
{
blk_t blV = ^(int count){return count * 2 ;};
return blV;
}