BeWithYou

胡搞的技术博客

C/C++/Lua

C中的char*和char[]


今天又遇到一个问题。看下面的代码。 char* s = "abcd"; s[1]='\0'; 这样会报bus error。查了下总线错误,一般发生于在非法的地址上进行取值赋值操作。难道是char* 定义的字符串不能修改么? 确实是这样的。 char* s = "abcd"; 定义了一个指向字符的指针,他并不知道内存有多大。如果要赋值的话,会提示错……
C/C++/Lua

Lua学习笔记(六)


C和Lua的交互 Lua是一门嵌入式的语言。它可以扩展,也可以被扩展。C和Lua交互有两种方式: C作为宿主语言,Lua作为库,实现一些用C写起来很费力的操作。 Lua作为应用程序,调用C语言写的库,弥补Lua中功能性的缺失。 C和Lua交互用的部分成为C API。包括:读取Lua全局变量,调用Lua函数,运行Lua代码片段,注册C函数被Lua调用等。 C和Lua之间通信关键在于一个虚拟的栈。……
C/C++/Lua

Lua学习笔记(五)


面向对象:Lua中隐藏了self的语法糖。用冒号隐藏了第一个参数self。function A:fun(v)     self.name = v end a:fun(100)
C/C++/Lua

Lua学习笔记(四)


metatables & metamethods:metatables允许我们改变table的行为,比如定义+操作。任何一个表都可以是其他一个表的metatable,一组相关的表可以共享一个metatable,一个表也可以是自身的metatable。metatable描述表的行为,自然会想到面向……
C/C++/Lua

Lua学习笔记(三)


协程(coroutine):协程与多线程的比较,有自己的堆栈、局部变量、指令指针等,但是协程本身与其他协程共享全局变量。主要不同在于,多处理器下,多线程可以真实的同时运行多个线程。而协程任意时刻只能有一个在真实运行,并且只有在明确要求被挂起时才会挂起。
C/C++/Lua

Lua学习笔记(二)


函数:定义方式function func_name(arg-list)     ... end调用时 如果只有一个参数并且为字符串或table 可以不加括号……
回到顶部