C语言有哪些实用的编程方法?

作者&投稿:斋景 (若有异议请与网页底部的电邮联系)
~

C语言8个实用方法代码优化

1、选择合适的算法和数据结构

选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语包莫有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高

2、使用尽量小的数据类型

能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量。当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现。

3、减少运算的强度

a、查表(游戏程序员必修课)

一个聪明的游戏大虾,基本上不会在自己的主循环里搞什么运算工作,绝对是先计算好了,再到循环里查表。如果表很大,不好写,就写一个init函数,在循环外临时生成表格。

b、求余运算

位操作只需一个指令周期即可完成,而大部分的C编译器的“%”运算均是调用子程序来完成,代码长、执行速度慢。通常,只要求是求2n方的余数,均可使用位操作的方法来代替。

4、结构体成员的布局

a、按数据类型的长度排序

把结构体的成员按照它们的类型长度排序,声明成员时把长的类型放在短的前面。编译器要求把长型数据类型存放在偶数地址边界。

b、把结构体填充成最长类型长度的整倍数

把结构体填充成最长类型长度的整倍数。照这样,如果结构体的第一个成员对齐了,所有整个结构体自然也就对齐了。

5、循环优化

a、充分分解小的循环

要充分利用CPU的指令缓存,就要充分分解小的循环特别是当循环体本身很小的时候,分解循环可以提高性能。注意,很多编译器并不能自动分解循环。

b、提取公共部分

对于一些不需要循环变量参加运算的任务可以把它们放到循环外面,这里的任务包括表达式、函数的调用、指针运算、数组访问等,应该将没有必要执行多次的操作全部集合在一起,放到一个init的初始化程序中进行。

6、提高CPU的并行性

a、使用并行代码

尽可能把长的有依赖的代码链分解成几个可以在流水线执行单元中并行执行的没有依赖的代码链。很多高级语言,包括C++,并不对产生的浮点表达式重新排序,因为那是一个相当复杂的过程。

b、避免没有必要的读写依赖

当数据保存到内存时存在读写依赖,即数据必须在正确写入后才能再次读取。虽然AMD Athlon等CPU有加速读写依赖延迟的硬件,允许在要保存的数据被写入内存前读取出来,但是,如果避免了读写依赖并把数据保存在内部寄存器中,速度会更快。

7、循环不变计算

对干一些不需要循环变量参加运算的计算任务可以把它们放到循环外面,现在许多编译器还是能自己干这件事,不过对干中间使用了变量的算式它们就不敢动了,所以很多情况下你还得自己干。对于那些在循环中调用的函数,凡是没必要执行多次的操作通通提出来放到一个init函数里,循环前调用。另外尽量减少喂食次数,没必要的话尽量不给它传参,需要循环变量的话让它自己建立一个静态循环变量自己累加,速度会快一点。

8、采用递归

与LISP之类的语言不同,C语言一开始就病态地喜欢用重复代码循环,许多C程序员都是除非算法要求,坚决不用递归。

事实上,C编译器们对优化递归调用一点都不反感,相反,它们还很喜欢干这件事。只有在递归函数需要传递大量参数,可能造成瓶颈的时候,才应该使用循环代码,其他时候,还是用递归好些。



编程语言学习建议:C语言只是起点
答:很多同学在学完或正在学编程语言的过程中,都会遇到这样的情况:学完C语言后,提到某些知识点,如三目运算符、指针、水仙花数、二维数组、位运算,感觉既熟悉又陌生。本文将为你提供编程语言学习建议,帮助你更好地掌握C语言和其他编程语言。C语言是编程的起点C语言是编程的起点,如果你想深入底层学习,C语言是非常值得...

编程新手看过来!零基础也能掌握的计算机编程秘籍
答:本文将为大家介绍一些编程学习的秘籍,帮助零基础的新手也能轻松掌握编程技能。明确学习目的编程学习的第一步是明确学习目的。是为了追求高薪还是对编程有浓厚兴趣?只有兴趣才是最佳动力。只要你有坚韧不拔的精神,零基础也能征服编程。打好基础从C语言、PHP开始,这些是编程基石。同时,不妨学习HTML和CSS+DIV,...

编程新手必备!如何入门编程,看这里就够了!
答:你是否对编程充满好奇,但不知道如何开始?别担心,这里有一份精心准备的编程入门指南,专为你量身定制入门关键入门是关键!一个好的开始,决定你未来的编程之路是否顺畅。只要掌握了正确的方法和思路,就能轻松入门,为今后的编程工作打下坚实基础。学习路线推荐学习路线:从严谨的Pascal语言开始,再到灵活的C语言,最后...

C语言编程?
答:以3名同学为例的代码如下:运行结果如下:附源码:(改为40名同学)include <stdio.h> define N 40 void inid(long id[]) { // 输入所有同学学号 int i;for (i = 0; i < N; i++)scanf("%ld", &id[i]);} void inscore(int score[][5]) { // 输入所有同学成绩 int i, j...

c语言必背代码有哪些?
答:3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。*/ include "math.h"main(){ int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(...

C语言编程判断输入的一个数是否是5的倍数怎么编写?
答:数据类型丰富。C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。表达方式灵活实用。C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它...

C语言的知识有什么?
答:3、一个C语言程序有且只有一个main函数,是程序运行的起点。第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---a.obj---a.exe)这个过程中注意.c和obj文件时无法运行的,只有.exe文件才可以运行。(常考!)第三节、标识符 ...

编程:从C语言开始学习
答:学习C语言可以帮助你更好地理解计算机的工作原理,提高编程能力。易语言的特点易语言是一种使用汉字编写的编程语言,它的代码更加易于理解和阅读。但由于易语言的应用范围较窄,我们还是建议初学者从C语言开始学习编程。学习编程的方法学习编程需要掌握一定的基础知识,包括语法、数据类型、运算符等。初学者可以通过...

给c语言初学者的良心建议
答:在实际的开发中,程序员可以通过将代码组织成多个.C和.h文件来实现模块化编程,从而提高代码的可维护性和可重用性。 第五点:库函数的实现。 学习并掌握了C语言的基本知识后,我们可以进一步通过实践来巩固和提高自己的编程能力。一个好的练习方法是尝试使用C语言标准库中常用的函数来完成些小的项目或任务,并尝试自己...

编程入门:C语言真的很简单
答:编程并不像你想象的那么难,特别是对于入门者来说,C语言是一门非常简单的编程语言。如果你觉得看书难以理解,不妨试试搜索一些在线视频教程。在土豆、优酷、百度上都能找到大量的学习资源,记得找到最适合自己的学习方法哦!‍大量实践练习学习编程,大量的实践练习是必不可少的。通过不断的练习,你才能真正深入...