block与函数指针有什么区别】的更多相关文章

block就是一个代码块,但是它的神奇之处在于在内联(inline)执行的时候(这和C++很像)还可以传递参数.同时block本身也可以被作为参数在方法和函数间传递,这就给予了block无限的可能.     block如何申明(对比于c语言中的函数申明) [ 此帖被haoxue在2013-07-30 16:41重新编辑 ] 图片:block如何申明.png  第一个区别,函数指针是对一个函数地址的引用,这个函数在编译的时候就已经确定了.而block是一个函数对象,是在程序运行过程中产生的.在一个…
相似点 1.函数指针和Block都可以实现回调的操作,声明上也很相似,实现上都可以看成是一个代码片段. 2.函数指针类型和Block类型都可以作为变量和函数参数的类型.(typedef定义别名之后,这个别名就是一个类型) 不同点 1.函数指针只能指向预先定义好的函数代码块(可以是其他文件里面定义,通过函数参数动态传入的),函数地址是在编译链接时就已经确定好的. 2.Block本质是Objective-C对象,是NSObject的子类,可以接收消息. 3.函数里面只能访问全局变量,而Block代码…
C语言函数指针 和 OC-Block 一. C语言函数指针 关于函数指针的知识详细可参考:http://www.cnblogs.com/mjios/archive/2013/03/19/2967037.html #include <stdio.h> //在main之前定义一个函数 int sum(int a, int b) { return a + b; } int main() { //定义函数指针变量pfunc,指向sum函数 int (*pfunc)(int a, int b) = su…
转载:http://c.biancheng.net/cpp/html/3248.html 一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似.我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数.这种指针就是函数指针. 注意区别:指针函数(返回值是一个指针的函数). 函数指针的定义形式为: returnType (*pointerName)(param…
昨天发现了一个问题,就是使用对类中的非静态成员函数使用std::bind时,不能像普通函数一样直接传递函数名,而是必须显式地调用&(取地址),于是引申出我们今天的问题:非静态类成员函数指针和普通函数指针有什么区别? 一.C++中对函数到指针的隐式转换 以前在C语言程序设计课上,老师都会说:“函数名就是指向这个函数的指针”.实际上通过查阅cppreference中的隐式转换规则,其中有这么一句关键的话道出了玄机: 函数类型 T 的左值能隐式转换成指向该函数的指针纯右值.这不作用于非静态成员函数,因…
1.      引用本身是有指针实现的:引用为只读指针 例子: int d=123; int& e=d;    //引用 int * const e=d; //只读指针,e指向d,不可修改e指向别的变量 2.      const修饰指针问题 2.1.指向const对象的指针: const double *cptr; const 所限定的是指针所指的对象,而非限定指针为const 例子: const double ip=3.14;   //ip为const型 const double *cptr…
我们时常在C++开发中用到指针,指针的好处是开销很小,可以很方便的用来实现想要的功能,当然,这里也要涉及到指针的一些基本概念.指针不是基本数据类型,我们可以理解他为一种特殊类型的对象,他占据一定空间,但是所带来的好处就是C++如此强大的深层次原因了. 转载请注明出处: http://blog.csdn.net/elfprincexu 1. 指针函数, ( __type__ * func( void, int,) ) 顾名思义,他是一个函数,只不过和一般函数区分的原因是它返回的是一个指针.int*…
一. 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: float *fun();…
一. 在学习过程中发现这"指针函数"与"函数指针"容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 类型标识符    *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值.函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量. 表示: f…
在C++中,两个类之间存在一种关系,某个类需要另外一个类去完成某一个功能,完成了之后需要告知该类结果,这种最普通最常见的需求,往往使用回调函数来解决. 如题,我总结下来有这么四种方式可以完成这项功能,下面来一一分析: 1.使用模板 // CppTest.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdlib.h> #include <math.h> template<typename T&g…