func
原文发表于2009年2月5日 标题是《一个自己犯的C/C++错误》 以前自己写程序时经常犯的错误,后来才开始重视起来,为了更好的说明这个错误,我将演示代码贴出来: 可以看出,表面上这个错误是关于在函数内部将传参指向的缓冲区清零的,调试上述程序后发现主函数里定义的缓冲区被全部成功设置为0,而将这个缓冲区地址传入函数func_test后只有前4个字节被置0,那么问题出在哪里呢?问题就在sizeof上,在主函数上sizeof算得缓冲区为11(包含字符串结尾\0),而函数func_test里算得是4,很明显只是计算的指针的大小。 疑惑就在这里,buffer是数组名不就是地址吗,为什么传参后sizeof值就不算整个数组的大小而只算指针的大小呢? 其实这个问题很容易buffer是数组名,sizeof(数组名)算得的是整个数组占用的字节数,一旦赋值给任何指针(函数传参也相当于一种赋值),也就算的是这个指针的占用空间,和数组就没任何关系了。若还是算的事数组占用空间,那这个指针的占用就没办法计算了
函数和存储过程一样,也是编译好存储在数据库服务器上的程序代码。函数与存储过程 最大的不同在于,函数必须要有返回值。当然了,函数具有存储过程一样的优点,不知道的伙计,请参见《Oracle学习笔记——存储过程》
在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。 我们可以看到,方法是在 func 和 notify 之间多了一个 user 类型的参数 u,这个 u 就称作接收者。 接收者有两种,一种是值接收者,一种是指针接收者
Spark 平台的通信模式中,有若干种方式需要通过与页面中嵌入的 Flash 交互完成。 Flash 和页面有多种方式可以交互,为了保证 Spark 平台提供的 Flash 能够在各种环境下都能正常工作,推荐采用以下方式进行处理。 首先,需要用将 swf 文件嵌入到网页中,推荐采用 swfobject 1.5 版本
传统编程语言,如Java,C++或PHP,对面向对象都提供了支持,一般的面向对象编程,主要是定义一个个抽象的类,然后再通过实例化一个个的对象,但是,Go语言虽然提供了面向对象的支持,但与传统语言并不相同,这可能是许多从其他编程语言转过来的程序员不太应Go语言的原因。 下面来讲讲Go对面向对象的支持有什么不同。 Go语言的面向对象定义,与其他语言不同
原文发表于2009年2月5日 标题是《一个自己犯的C/C++错误》 以前自己写程序时经常犯的错误,后来才开始重视起来,为了更好的说明这个错误,我将演示代码贴出来: 可以看出,表面上这个错误是关于在函数内部将传参指向的缓冲区清零的,调试上述程序后发现主函数里定义的缓冲区被全部成功设置为0,而将这个缓冲区地址传入函数func_test后只有前4个字节被置0,那么问题出在哪里呢?问题就在sizeof上,在主函数上sizeof算得缓冲区为11(包含字符串结尾\0),而函数func_test里算得是4,很明显只是计算的指针的大小。 疑惑就在这里,buffer是数组名不就是地址吗,为什么传参后sizeof值就不算整个数组的大小而只算指针的大小呢? 其实这个问题很容易buffer是数组名,sizeof(数组名)算得的是整个数组占用的字节数,一旦赋值给任何指针(函数传参也相当于一种赋值),也就算的是这个指针的占用空间,和数组就没任何关系了。若还是算的事数组占用空间,那这个指针的占用就没办法计算了
这是naive的实现,假设disp函数的定义如下呢? 从编译结果来看,只是产生了warning,没有error,但是运行的时候出现段错误!这也从一方面验证了对于代码的warning也要保持足够警惕。 在Ubuntu下的提示如下: 究其原因是上述函数声明的是指向2个元素的一维数组,每个元素类型为指向int的指针类型。为什么会导致这样的理解?’[]’的优先级比’*‘高
最近测试时发现代码中一处关于 std::function 函数对象的问题。在卸载某个 Dll(记为 A)的时候会触发该模块中一个单例对象的析构,在它析构内部的 std::function 成员时产生了内存访问异常(0xc0000005)。而触发这个异常的 std::function 其实是复制于另一个 Dll(记为 B),卸载 Dll A 时,Dll B 已经卸载掉了
最近测试时发现代码中一处关于 std::function 函数对象的问题。在卸载某个 Dll(记为 A)的时候会触发该模块中一个单例对象的析构,在它析构内部的 std::function 成员时产生了内存访问异常(0xc0000005)。而触发这个异常的 std::function 其实是复制于另一个 Dll(记为 B),卸载 Dll A 时,Dll B 已经卸载掉了
这里的map是一个面向对象的写法,如果改写成函数式的,那map可以写成: 如果func的输入类型是A,输出类型是B,容器类型是T,那map的函数签名就是: Functor本质上是将一个Category映射到另一个Category,并保持Category的结构不变。如果源Category和目标Category是同一个,那这个Functor叫Endofunctor 回到最开始的问题,map到底是什么?在Functor的定义下(如果我们将Category看成编程里的类型),map方法本质上是一个在Category(类型)之间转换函数的函数。