C 语言高效编程 第1招:以空间换时间计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。例如:字符串的赋值。方法A,通常的办法:#define LEN 32char string1 [LEN];memset (string1,0,LEN);strcpy (string1,... 2023-06-13 空间换时间系统实时性文章基础课C语言基础
C语言中的原码与补码 原码概念原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位),该位为0表示正数,该位为1表示负数,其余位表示数值的大小。优点简单直观;例如,我们用8位二进制表示一个数,+11的原码为00001011,-11的原码为10001011缺... 2023-06-13 原码补码二进制文章基础课C语言基础
C语言的几种位操作运算 在汇编语言中有直接对位进行操作的指令,如置位、复位、位取反、测试某一位等,这对于硬件操作十分方便,在C语言中尽管也提供了一些位操作手段,如按位与、按位或、按位取反等,但它们是对一个字节进行操作,如要对具体的一位操作,仍旧不方便,以下给出了一些函数,可以模仿汇编语言的一... 2023-06-13 C语言位操作程序文章基础课C语言基础
解读传说中计算π的超牛的C程序 这段C代码是这样的:#include"stdio.h"longa=10000,b,c=2800,d,e,f[2801],g;voidmain(){for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}我把解释这段代码的文章... 2023-06-13 C算法语言Email存储文章基础课C语言基础
C语言宏条件编译详解 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预... 2023-06-13 C语言宏条件编译指令文章基础课C语言基础
C/C++的宏详细解析 关于宏的一些语法问题,可以在google上找到。相信我,你对于宏的了解绝对没你想象的那么多。如果你还不知道#和##,也不知道prescan,那么你肯定对宏的了解不够。我稍微讲解下宏的一些语法问题(说语法问题似乎不妥,macro只与preprocessor有关,跟语义分析又无关):1. 宏可以像函数一样... 2023-06-13 宏详解CC++程序文章基础课C语言基础
C语言之Main函数返回值问题分析 “The C programming Language(《C 程序设计语言》)用的就是 main( )。”--- 这是因为第一版的C语言只有一种类型,那就是int,没有char,没有long,没有float,…………既然只有一种类型,那么就可以不写,后来的改进版为了兼容以前的代码于是规定:不... 2023-06-13 返回值函数main分析C语言文章基础课C语言基础
C语言的一些误用和知识总结 1.关于自增自减(即++i,i++)要想给一个数加一或减一我们可以:i += 1;j -= 1;而C语言还允许用++和--运算符,其实这里有误导,因为++和--可以作为前缀和后缀,这样的话他们就有可能改变操作数的值,下面让我们来看看:i = 1;printf("i is %dn",++i); /* prints i is 2 */printf("i ... 2023-06-13 误用总结知识C语言文章基础课C语言基础
C语言数组入门之数组的声明与二维数组的模拟 语言中指针与数组这两个概念之间的联系是密不可分的,以至于如果不能理解一个概念,就无法彻底理解另一个概念。C语言中的数组值得注意的地方有以下两点:C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。然而,C语言中数组的元素可以是任何类型的对象,当... 2023-06-13 C语言数组二维数组文章基础课C语言基础
C语言:指针的长度和类型 指针的长度取决于使用的机器和编译器,例如:在现代windows上,指针是32位或是64位长测试代码:#include#include#include#includestruct p{int n;float f;};int main(){struct p *sptr;printf("sizeof *char:... 2023-06-13 C语言指针程序文章基础课C语言基础
C语言中位运算置0操作 代码:/* * test.cpp * * Created on: 2014.05.23 * Author: Spike *//*eclipse cdt, gcc 4.8.1*/#include #define BIT_MASK(bit_pos) (0x01 << (bit_pos)) using namespace std; int Bit_Reset(u... 2023-06-13 C语言位运算程序文章基础课C语言基础
C语言中程序时序问题的排查过程 一、问题描述在某软件版本中,有两个模块(模块A与模块B)之间要进行通信。通信链路建立起来之后,模块A向模块B发消息,消息中携带了用户号码及序列号。在消息发送成功之后,模块A按照序列号将用户号码存放到一个全局变量中。模块B在接收到模块A发的消息之后,解析出用户号码,并进行... 2023-06-13 C语言程序时序问题排查文章基础课C语言基础
C语言实现二进制文件读写详解 下面我们看看一个拷贝程序的源码:Copy.c:#include #include #define MAXLEN 1024int main(int argc, char *argv[]){if( argc < 3 ){printf("usage: %s %s/n", argv[0], "infile outfile");exit(1);}FILE * out... 2023-06-13 C语言二进制读写文章基础课C语言基础
如何使用C创建php扩展 使用C创建php扩展优点:1.提高运行效率。2.降低php复杂度,可以直接调用扩展方法实现功能。3.方便与第三方库交互。缺点:1.开发比php复杂。2.可维护性降低。3.开发周期变长。php开发,发现问题后,只要修复问题,即可见到效果。如果使用扩展,修复后需要重新编译,重启服务,才能见到效果... 2023-06-13 C语言PHP程序文章基础课C语言基础
小心C语言时间函数陷阱 先来看一个例子:1 #include 2 #include 34 int main ()5 {67 time_t time_1, time_2;8 struct tm *tm_1, *tm_2, *tm_3;9 struct tm tm_4, tm_5;1011 printf("-------------------- PART I --------------... 2023-06-13 C语言时间函数陷阱文章基础课C语言基础
C语言中实现图(Graph) 图(Graph)是一种较线性表和数更为复杂的数据结构,在线性表中数据元素仅有线性关系,各一个数据元素只有一个直接前驱和一个直接后继,在树形结构中,数据元素之间有着明显的层次关系,并且在每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中的一个元素相关,而在图形... 2023-06-13 C语言图(Graph)程序文章基础课C语言基础
C程序中如何调用main函数参数 main函数提供的含参原型如:int _tmain(int argc, _TCHAR* argv[]){for(int i=0;i 2023-06-13 C程序main参数文章基础课C语言基础
浅析C语言中的数组及字符数组 我们来编写一个程序,以统计各个数字、空白符(包括空格符、制表符及换行符)以及所有其它字符出现的次数。这个程序的实用意义并不大,但我们可以通过该程序讨论 C 语言多方面的问题。所有的输入字符可以分成 12 类,因此可以用一个数组存放各个数字出现的次数,这样比使用 10 个独... 2023-06-13 C语言数组字符数组文章基础课C语言基础
C语言编程中统计输入的行数以及单词个数的方法 统计输入的行数标准库保证输入文本流以行序列的形式出现,每一行均以换行符结束。因此,统计行数等价于统计换行符的个数。#include/* count lines in input */main(){int c, nl;nl = 0;while ((c = getchar()) != EOF)if (c == '\n')++nl;printf("%d\n", nl);}在该程... 2023-06-13 C语言循环语句判断语句程序文章基础课C语言基础
快速学习C语言中for循环语句的基本使用方法 对于某个特定任务我们可以采用多种方法来编写程序。下面这段代码也可以实现前面的温度转换程序的功能:#include/*打印华氏温度—摄氏温度对照表*/main(){int fahr;for (fahr = 0; fahr <= 300; fahr = fahr + 20)printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32)... 2023-06-13 C语言for循环使用方法文章基础课C语言基础
C语言中字符的输入输出以及计算字符个数的方法详解 C语言字符输入与输出标准库提供的输入/输出模型非常简单。无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理。文本流是由多行字符构成的字符序列,而每行字符则由 0 个或多个字符组成,行末是一个换行符。标准库负责使每个输入/输出流都能够遵守这一模型。... 2023-06-13 C语言字符程序文章基础课C语言基础
详解C语言中的符号常量、变量与算术表达式 C语言中的符号常量在结束讨论温度转换程序前,我们再来看一下符号常量。在程序中使用 300、20 等类似的“幻数”并不是一个好习惯,它们几乎无法向以后阅读该程序的人提供什么信息,而且使程序的修改变得更加困难。处理这种幻数的一种方法是赋予它们有意义的名字。#d... 2023-06-13 C语言符号算术表达式文章基础课C语言基础
C语言中快速排序和插入排序优化的实现 快速排序快速排序思想1962年,由C.A.R.Hoare创造出来。该算法核心思想就一句话:“排序数组时,将数组分成两个小部分,然后对它们递归排序”。然而采取什么样的策略将数组分成两个部分是关键,想想看,如果随便将数组A分成A1和A2两个小部分,即便分别将A1和A2排好序,那么A1和... 2023-06-13 C语言快速排序插入排序文章基础课C语言基础
C语言for语句用法详解 首先,这里所提到的类C语言指的是如C、C++、C#和Java等语法和C语言一样或类似的程序设计语言。这些语言中,for语句的语法和执行流程都是一样的。本文将就这一语句的用法进行一个较为深入的讨论。for语句:复制代码 代码如下:for (表达式1;表达式2;表达式3){ 循环语句}表达式1 ... 2023-06-13 C语言for语句详解文章基础课C语言基础
C++编程中的const关键字常见用法总结 1、定义常量(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。TYPE const ValueName = value;const TYPE ValueName = value;(2)将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初始化... 2023-06-13 C++const关键字总结文章基础课C语言基础