程序开发中逻辑的函数组成有哪些?
2021-07-02 · 学动漫、设计、电竞、电商、短视频、软件等
关注
展开全部
函数有很多,比如字符串拼接函数,分割函数,打乱函数等。
确保堆栈上至少有 n 个额外空位。 如果不能把堆栈扩展到相应的尺寸,函数返回假。 失败的原因包括将把栈扩展到比固定最大尺寸还大 (至少是几千个元素)或分配内存失败。 这个函数永远不会缩小堆栈; 如果堆栈已经比需要的大了,那么就保持原样。
lu a_close
[-0, +0, –]
void lua_close (lu a_State *L);
销毁指定 Lua 状态机中的所有对象 (如果有垃圾收集相关的元方法的话,会调用它们), 并且释放状态机中使用的所有动态内存。 在一些平台上,你可以不必调用这个函数, 因为当宿主程序结束的时候,所有的资源就自然被释放掉了。 另一方面,长期运行的程序,比如一个后台程序或是一个网站服务器, 会创建出多个 Lua 状态机。那么就应该在不需要时赶紧关闭它们。
lu a_compare
[-0, +0, e]
int lu a_compare (lua_State *L, int index1, int index2, int op);
比较两个 Lua 值。 当索引 index1 处的值通过 op 和索引 index2 处的值做比较后条件满足,函数返回 1 。 这个函数遵循 Lua 对应的操作规则(即有可能触发元方法)。 反之,函数返回 0。 当任何一个索引无效时,函数也会返回 0 。
op 值必须是下列常量中的一个:
LUA_OPEQ: 相等比较 (==)
LUA_OPLT: 小于比较 (<)
LUA_OPLE: 小于等于比较 (<=)
lua_concat
[-n, +1, e]
void l ua_concat (lua_State *L, int n);
连接栈顶的 n 个值, 然后将这些值出栈,并把结果放在栈顶。 如果 n 为 1 ,结果就是那个值放在栈上(即,函数什么都不做); 如果 n 为 0 ,结果是一个空串。 连接依照 Lua 中通常语义完成()。
lua_copy
[-0, +0, –]
void lu a_copy (lua_State *L, int fromidx, int toidx);
从索引 fromidx 处复制一个值到一个有效索引 toidx 处,覆盖那里的原有值。 不会影响其它位置的值。
l ua_createtable
[-0, +1, e]
void l ua_createtable (lua_State *L, int narr, int nrec);
创建一张新的空表压栈。 参数 narr 建议了这张表作为序列使用时会有多少个元素; 参数 nrec 建议了这张表可能拥有多少序列之外的元素。 Lua 会使用这些建议来预分配这张新表。 如果你知道这张表用途的更多信息,预分配可以提高性能。 否则,你可以使用函数 lua_newtable 。
lua_dump
[-0, +0, e]
int lu a_dump (lua_State *L,
lua_Writer writer,
void *data,
int strip);
把函数导出成二进制代码块 。 函数接收栈顶的 Lu a 函数做参数, 然后生成它的二进制代码块。 若被导出的东西被再次加载, 加载的结果就相当于原来的函数。 当它在产生代码块的时候, lua_dump 通过调用函数 writer (r ) 来写入数据,后面的 data 参数会被传入 writer 。
如果 strip 为真, 二进制代码块将不包含该函数的调试信息。
最后一次由 writer 的返回值将作为这个函数的返回值返回; 0 表示没有错误。
该函数不会把 Lua 函数弹出堆栈。
确保堆栈上至少有 n 个额外空位。 如果不能把堆栈扩展到相应的尺寸,函数返回假。 失败的原因包括将把栈扩展到比固定最大尺寸还大 (至少是几千个元素)或分配内存失败。 这个函数永远不会缩小堆栈; 如果堆栈已经比需要的大了,那么就保持原样。
lu a_close
[-0, +0, –]
void lua_close (lu a_State *L);
销毁指定 Lua 状态机中的所有对象 (如果有垃圾收集相关的元方法的话,会调用它们), 并且释放状态机中使用的所有动态内存。 在一些平台上,你可以不必调用这个函数, 因为当宿主程序结束的时候,所有的资源就自然被释放掉了。 另一方面,长期运行的程序,比如一个后台程序或是一个网站服务器, 会创建出多个 Lua 状态机。那么就应该在不需要时赶紧关闭它们。
lu a_compare
[-0, +0, e]
int lu a_compare (lua_State *L, int index1, int index2, int op);
比较两个 Lua 值。 当索引 index1 处的值通过 op 和索引 index2 处的值做比较后条件满足,函数返回 1 。 这个函数遵循 Lua 对应的操作规则(即有可能触发元方法)。 反之,函数返回 0。 当任何一个索引无效时,函数也会返回 0 。
op 值必须是下列常量中的一个:
LUA_OPEQ: 相等比较 (==)
LUA_OPLT: 小于比较 (<)
LUA_OPLE: 小于等于比较 (<=)
lua_concat
[-n, +1, e]
void l ua_concat (lua_State *L, int n);
连接栈顶的 n 个值, 然后将这些值出栈,并把结果放在栈顶。 如果 n 为 1 ,结果就是那个值放在栈上(即,函数什么都不做); 如果 n 为 0 ,结果是一个空串。 连接依照 Lua 中通常语义完成()。
lua_copy
[-0, +0, –]
void lu a_copy (lua_State *L, int fromidx, int toidx);
从索引 fromidx 处复制一个值到一个有效索引 toidx 处,覆盖那里的原有值。 不会影响其它位置的值。
l ua_createtable
[-0, +1, e]
void l ua_createtable (lua_State *L, int narr, int nrec);
创建一张新的空表压栈。 参数 narr 建议了这张表作为序列使用时会有多少个元素; 参数 nrec 建议了这张表可能拥有多少序列之外的元素。 Lua 会使用这些建议来预分配这张新表。 如果你知道这张表用途的更多信息,预分配可以提高性能。 否则,你可以使用函数 lua_newtable 。
lua_dump
[-0, +0, e]
int lu a_dump (lua_State *L,
lua_Writer writer,
void *data,
int strip);
把函数导出成二进制代码块 。 函数接收栈顶的 Lu a 函数做参数, 然后生成它的二进制代码块。 若被导出的东西被再次加载, 加载的结果就相当于原来的函数。 当它在产生代码块的时候, lua_dump 通过调用函数 writer (r ) 来写入数据,后面的 data 参数会被传入 writer 。
如果 strip 为真, 二进制代码块将不包含该函数的调试信息。
最后一次由 writer 的返回值将作为这个函数的返回值返回; 0 表示没有错误。
该函数不会把 Lua 函数弹出堆栈。
展开全部
(1)一个源程序文件是由一个或多个C函数组成的,一个源程序文件是一个编译单位。
(2)一个C程序由一个或多个源程序文件组成,一个源程序文件可以为多个C程序共用。
(3)一个C程序中一定要有一个名为main的主函数,执行时总是从主函数开始,其它函数只有被调用时才会执行,执行完毕返回到调用处继续执行,正常情况下总是在主函数结束执行。
(4)所有的函数是平行的,即在定义时是互相独立的,主函数可以调用其它函数,其它函数之间可以互相调用,但其它函数不能调用主函数。
(5)从用户使用的角度看,函数可分为标准函数(库函数)和用户自定义函数。
(6)从函数的形式看,函数可分为无参函数和有参函数。
(2)一个C程序由一个或多个源程序文件组成,一个源程序文件可以为多个C程序共用。
(3)一个C程序中一定要有一个名为main的主函数,执行时总是从主函数开始,其它函数只有被调用时才会执行,执行完毕返回到调用处继续执行,正常情况下总是在主函数结束执行。
(4)所有的函数是平行的,即在定义时是互相独立的,主函数可以调用其它函数,其它函数之间可以互相调用,但其它函数不能调用主函数。
(5)从用户使用的角度看,函数可分为标准函数(库函数)和用户自定义函数。
(6)从函数的形式看,函数可分为无参函数和有参函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询