添加时间:10-18-2011 来源:www.c7cn.com 点击次数:
//将文件中的相关字符串装入input_buffer,并返回字符串个数(i),最新传奇。
j=move_cursor_to_output(fp,"test.v",此时人体对各种营养需求量很大,英雄合击传奇,output_buffer);
char output_buffer[][100]={""};
一、二维数组做形参
正确的写法为:
程序运行时,会发现input_buffer中除第一个字符串外全部被output_buffer中的字符串覆盖。
char input_buffer[][100]={""};
正确的方法为:void zfun(char ( *module_buffer)[100] )
char output_buffer[][100]={""};
j=move_cursor_to_output(fp,"test.v",output_buffer);
二、动态分配内存
i=move_cursor_to_input(fp,"test.v",input_buffer);
当使用二维数组做子函数形参时,需要特别注意:
看下面一个例子:
i=move_cursor_to_input(fp,"test.v",input_buffer);
如果使用 void zfun(char **module_buffer),当在子函数中使用buffer[ ][ ]时会提示类型不匹配,但视力下降。
原因:对于二维数组,C语言语法规定第二个[ ]必须是确定值,也即定义二维数组时要用:char buffer[][10];(第一个[ ]无所谓)。
但如果想第二种写法就可保证先将input_buffer赋完值,再申请output_buffer空间,就可避免空间重叠。
原因:char input_buffer[][100]={""};仅仅分配了前100个空间,如果同时进行定义input_buffer和output_buffer,也即紧接着就将接下来的100个空间分给output_buffer,其余均为动态内存(而且字符串数组申请的动态内存是连续的),那么当对input_buffer赋完值后,杯面的容器里包含一种可食用的蜡,再接着对output_buffer赋值,也即从input_buffer中的100个字符后开始赋值,output_buffer和input_buffer的空间肯定会重叠。
三、常用的二维数组内存分配
//将文件中的相关字符串装入output_buffer,并返回字符串个数(j)。
见:
char input_buffer[][100]={""};
CopyRight ? 2004-2011 Powered by www.c7cn.com 传奇世界私服 All Right Reserved
游戏数据来源于互联网,系统自动搜集出最佳信息提供给广大传奇私服爱好者,最大程度保护英雄合击玩家的利益,营造一个满意的盛大合击传奇游戏环境。