c语言函数不优化 c语言函数不优化怎么办

c语言函数优化

c函数是一个独立的程序段,它执行具体的、明确的任务

成都创新互联主营白银区网站建设的网络公司,主营网站建设方案,App定制开发,白银区h5小程序定制开发搭建,白银区网站营销推广欢迎白银区等地区企业咨询

特点:

一个函数只能返回一个值

一个程序可以有一个或多个函数

函数可以嵌套调用,但不能在一个函数中定义另一个函数

无论函数是否有参数,一定要有括号

函数在定义或使用前应在main() 函数中进行声明

如果C语言函数参数太多,可以怎么优化

一个函数的参数的数目没有明确的限制,但是参数过多(例如超过8个)显然是一种不可取的编程风格。参数的数目直接影响调用函数的速度,参数越多,调用函数就越慢。另一方面,参数的数目少,程序就显得精练、简洁,这有助于检查和发现程序中的错误。因此,通常应该尽可能减少参数的数目,如果一个函数的参数超过4个,你就应该考虑一下函数是否编写得当。 如果一个函数不得不使用很多参数,你可以定义一个结构来容纳这些参数,这是一种非常好的解决方法。在下例中,函数print_report()需要使用10个参数,然而在它的说明中并没有列出这些参数,而是通过一个RPT_PARMS结构得到这些参数。 # include atdio. h typedef struct ( int orientation ; char rpt_name[25]; char rpt_path[40]; int destination; char output_file[25]; int starting_page; int ending_page; char db_name[25]; char db_path[40]; int draft_quality; )RPT_PARMS; void main (void); int print_report (RPT_PARMS* ); void main (void) { RPT_PARMS rpt_parm; /*define the report parameter structure variable * / /* set up the report parameter structure variable to pass to the print_report 0 function */ rpt_parm. orientation = ORIENT_LANDSCAPE; rpt_parm.rpt_name = "QSALES.RPT"; rpt_parm. rpt_path = "Ci\REPORTS" rpt_parm. destination == DEST_FILE; rpt_parm. output_file = "QSALES. TXT" ; rpt_parm. starting_page = 1; rpt_pann. ending_page = RPT_END; rpt_pann.db_name = "SALES. DB"; rpt_parm.db_path = "Ci\DATA"; rpt_pann. draft_quality = TRUE; /*call the print_report 0 function; paaaing it a pointer to the parameteM inatead of paMing it a long liat of 10 aeparate parameteM. * / ret_code = print_report(cu*pt_parm); } int print_report(RPT_PARMS*p) { int rc; /*acccM the report parametcra paaaed to the print_report() function */ oricnt_printcr(p-orientation); Kt_printer_quality((p-draft_quality == TRUE) ? DRAFT ; NORMAL); return rc; } 上例唯一的不足是编译程序无法检查引用print_report()函数时RPT_PARMS结构的10个成员是否符合要求。

c语言防止优化

编译器编译命令里有设置选项,通过设置,你可以要求 不优化,也可以要求用哪种优化。

具体选项有哪些,要查自己编译器的帮助文件。

例如,MS VC++ 6.0 编译器编

优化选项:

/O1:优化使产生的可执行代码最小

/O2:优化使产生的可执行代码速度最快

/Oa:指示编译器程序里没有使用别名,可以提高程序的执行速度

/Ob:控制内联(inline)函数的展开

/Od:禁止代码优化

/Og:使用全局优化

/Oi:用内部函数去代替程序里的函数调用,可以使程序运行的更快,但程序的长度变长

/Op:提高浮点数比较运算的一致性

/Os:产生尽可能小的可执行代码

/Ot:产生尽可能块的可执行代码

/Ow:指示编译器在函数体内部没有使用别名

/Ox:组合了几个优化开关,达到尽可能多的优化

/Oy:阻止调用堆栈里创建帧指针

/O2 为了加速,会优化掉。 选 /Od 不优化。

请问我这个c语言代码还能更加优化吗!

优化0:题目要求输入学生个数上限,所以输入n那里需要验证。

优化1:减少循环次数,题目没有说找最大最小必须单独循环。那么直接在输入循环的时候就能得结果。

优化2:你的j每次只循环一次,没有必要。

优化3:输入那里用临时变量传递,没必要,直接用数组地址。

优化4:数组最大值定义常量,便于后期程序修改参数。

下面代码,我完全按照你的写法写的,你拿来参考。(要是学过指针,比大小那里试试换成指针更好)

#include stdio.h

#define MS 40//最大学生人数

int main()

{

int n=0,i;

int a[MS][2];

int minmark,maxmark,minxuehao,maxxuehao;

while(!n || nMS)

  printf("请输入学生数量:"),scanf("%d",n);

for(i=0;in;i++)

{

  printf("请输入学生学号:");

  scanf("%d",a[i][0]);

  printf("请输入学生成绩:");

  scanf("%d",a[i][1]);

  if(i==0)

      minmark=maxmark=a[0][1];

  else{

      if(minmarka[i][1]) minmark=a[i][1],minxuehao=a[i][0];

      if(maxmarka[i][1]) maxmark=a[i][1],maxxuehao=a[i][0];

  }

}

printf("最高分为%d,学号为%d\n",maxmark,maxxuehao);

printf("最高分为%d,学号为%d\n",minmark,minxuehao);

return 0;

}

C语言函数问题

编译器根据对代码进行优化的需要自行规定对实参的求值顺序。有的编译器规定自左至右,有的编译器规定自右至左,这种对求值顺序的不同规定,对一般参数来讲没有影响。但是,如果实参表达式中带有副作用的运算符时,就有可能产生由于求值顺序不同而造成了二义性。你的编译器是自右向左的顺序。

几种C语言优化代码技巧

以下内容摘自李亚锋先生的《经典C面试真题精讲》

1.结构体设计为成员最长类型长度的整数倍;

2.减少函数参数的个数,不需要返回值的函数定义为void类型;

3.if...else....多条件分支语句中,把出现频率高的条件放在前面;

4.同时声明多个相同类型变量优于分别单独声明变量;

5.减少定义全局变量;

6.使用#define定义常量和小的函数实现;

7.有些情况嵌套汇编语句效率更高;

8.占用大的存储空间可以减少执行时间,同理时间也可以换取空间;

9提高程序算法效率;


网站标题:c语言函数不优化 c语言函数不优化怎么办
网页地址:http://myzitong.com/article/hisese.html