精华内容
下载资源
问答
  • c语言源程序的基本单位是什么?求教,网上都是说c语言的基本单位是函数?我想知道c语言源程序是什么
  • 当我们写好一个C程序的时候,仅仅一个.c的源程序,而我们运行完成之后就是一个.exe的可执行程序了,在这个过程中都发生了什么呢? (1).c的源程序会经过翻译环境和运行环境两个大的步骤。 其中,翻译环境包含...

    当我们写好一个C程序的时候,仅仅是一个.c的源程序,而我们运行完成之后就是一个.exe的可执行程序了,在这个过程中都发生了什么呢?



    (1).c的源程序会经过翻译环境运行环境两个大的步骤。

    其中,翻译环境包含编译链接。


    (2)而编译环境还包括三个阶段,分别是

    预处理阶段,编译阶段,汇编阶段

    a.预处理阶段生成*.i文件   在linux系统下可以使用gcc test.c -E命令生成相应的test.i文件

    在这个阶段中,主要进行文本操作,例如:注释删除,头文件的包含,#define定义的标识符替换、宏替换。

    b.编译阶段生成.s文件,在linux系统下可以使用gcc test.c -S命令生成相应的test.s文件

    在这个阶段中,主要进行语法分析、词法分析、语义分析、符号汇总的操作。

    c.汇编阶段生成.o文件,在linux系统下可以使用gcc test.c -c命令生成相应的test.o文件

    在这个阶段中,主要把汇编指令转化为二进制指令,并且形成符号表。


    (3)编译阶段完成之后就是链接了。链接时的主要操作为:

    a.符号表的合并。

    b.符号表的重定向:当存在两个符号表时,选一个有意义的符号表。

    c.合并段表。


    (4)运行环境

    程序执行的过程:
    1,程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。

    2,程序的执行便开始。接着便调用main函数。

    3,开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回地址。程序同时也考研使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。

    4,终止程序。正常终止main函数;也有可能是意外终止。


    展开全文
  • RSA加解密C语言源程序

    2009-05-31 12:56:29
    RSA加密实例分析 它基于公钥加密体制的一种算法。这个实例主要用来将某一重要文件绑定到一个IP地址上。 把它拷贝下来,存为CODE.C,然后执行" ... 整个过程中产生了两个中间文件,至于什么文件,你去试一试就知道啦!
  • 通过上次C程序与汇编程序相互交互... 这里就分析一下一个简单的C程序被翻译成汇编后是什么样的:  ifndef ??version ;汇编伪指令,语义应该和C语言类似,如果名称 ??version 未定义则进入内部 ?debug ...

      通过上次C程序与汇编程序相互交互看到了不同编译器之间合作的可能,最后的结果都是机器码,上次说过还有种通过C程序生成汇编代码后在其函数部分可以自己编写汇编代码然后与C程序进行连接的。
      这里就分析一下一个简单的C程序被翻译成汇编后是什么样的:

     ifndef ??version     ;汇编伪指令,语义应该和C语言类似,如果名称 ??version 未定义则进入内部
    ?debug  macro             ;在数据声明中,一个值,汇编程序分配但未初始化。
        endm                   ;终止宏或重复的块。
     endif            ;汇编伪指令,语义应该和C语言类似,ifndef的闭合标签
    ?debug  S "test.c"
    
    _TEXT   segment byte public 'CODE'        ;段定义,地址对齐方式为比特,公有类型,段类别为'CODE'
    DGROUP  group   _DATA,_BSS               ;段声明,将一组段_DATA,_BSS添加到名称DGROUP中
        assume  cs:_TEXT,ds:DGROUP,ss:DGROUP  ;段的作用声明,可以启到寄存器值的错误检查作用
    _TEXT   ends                  ;_TEXT段结束 该段对之后的代码段栈段数据段进行了声明
    
    _DATA   segment word public 'DATA'     ; _DATA段开始,地址对齐方式为字,公有类型,段类别为'DATA'
    d@  label   byte                          ;定义名为 d@ 的标签,类型为字节
    d@w label   word                          ;定义名为 d@w 的标签,类型为字
    _DATA   ends                              ;_DATA段结束
    
    _BSS    segment word public 'BSS'         ;BSS段开始,地址对齐方式为字,公有类型,段类别为'DATA'
    b@  label   byte                ;定义名为 b@ 的标签,类型为字节
    b@w label   word                          ;定义名为 b@w 的标签,类型为字
        ?debug  C E9E862014D06746573742E63    ;在数据声明中,一个值,汇编程序分配但未初始化。
    _BSS    ends                              ;BSS段结束(该段就是未初始化的全局变量区段,程序开始时会被初始化0)
    
    _TEXT   segment byte public 'CODE'          ;_TEXT段开始
    ;   ?debug  L 2                             ;在数据声明中,一个值,汇编程序分配但未初始化。
    
    _main   proc    near                        ;子程序 _main 寻址方式为 near(在C语言中也就是main)
        push    bp                              ;子程序代码....
        mov bp,sp
        sub sp,2
    ;   ?debug  L 4
        mov word ptr [bp-2],1
    ;   ?debug  L 5
    @1:
    ;   ?debug  L 6
        mov sp,bp
        pop bp
        ret 
    _main   endp                               ;子程序代码部分结束
    _TEXT   ends                               ;_TEXT段结束
        ?debug  C E9
    
    _DATA   segment word public 'DATA'        ;_DATA段开始
    s@  label   byte                          ;声明名称为 s@ 的标签,类型为字节
    _DATA   ends                              ;_DATA段结束
    
    _TEXT   segment byte public 'CODE'        ;_TEXT段开始
    _TEXT   ends                              ;_TEXT段开始
        public  _main                         ;声明子程序 _main  是公有的
        end                                   ;结束
    

       通过翻阅官方资料,大略把这些代码阅读完了,因为是编译器自动生成的,所以可能有些赘余的地方,比如最后四句,声明了段开始然后立即结束,在这两句中没有向段中添加任何内容,还有被注释掉的; ?debug …. 这些可能是用于TCC调试的额外信息,所以关于?debug的应该都可以去掉。在该代码中可以总结几个比较奇怪的地方:

    1. 以 ?debug 开头的可以当作是额外的调试信息

    2. 中间由 label的代表这是一个标签信息,在该伪指令前后分别是标签名和类型,在段开始声明的地方定义的标签可以当作是为了寻址该段首而定义的,因为标签名和段名首字母一样,并且加了个@,很生动形象。

     因为我没有使用过这种方法实现混合编程,所以也没特别走心,只是对照官方文档进行了简单的对比而已,当然的我也会对其进行理解和思考。通过这种形式就能和其它C源程序进行连接了,还是有研究价值的。下次继续研究这个时,我会多定义几个不同类型的函数与变量,以及自定义一些标号,再次深究,这次的研究都到此为止了。

    展开全文
  • 教程推荐:《c语言教程视频》C语言一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.OBJ的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此.OBJ文件与c语言提供的...

    c语言程序的执行总是起始于main函数。在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。

    6025907f0a8f936ac7e981c016013f82.png

    教程推荐:《c语言教程视频》

    C语言是一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.OBJ的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此.OBJ文件与c语言提供的各种库函数连接在一起,生成一个后缀. EXE的可执行文件。显然C语言不能立即执行。

    一个c程序有且仅有一个main函数,除main函数之外可以有若干个其它的函数,每个函数实现某一特定的操作。

    在一个C语言源程序中,无论main函数书写在程序的前部,还是后部,程序的执行总是从main函数开始,并且在main函数中结束。

    main函数,又称主函数,是程序执行的起点,main是相对来说的,如同音学理论之主调于泛音,泛音即程序中的除main之外的其他函数,迎合人们的思考方式而生成的而非必定的模式。有主有次,执行起来条清缕析,既可将程序模块化又实现了一个闭合的整体。

    程序执行总是从main函数开始,如果有有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序。在执行程序时,由系统调用main函数 。main 函数是在程序启动中完成对具有静态存储期的非局部对象的初始化之后被调用的。它是程序在有宿主 (hosted)环境(亦即有操作系统)中所指定的入口点。自立程序(启动加载器,操作系统内核,等等)的入口点则是由实现定义的。

    主函数的两个形参形式中的形参,允许从执行环境中传递任意的多字节字符串(它们通常被称为命令行参数),各个指针 argv[1] .. argv[argc-1] 指向每个这些字符串的第一个字符。argv[0] 是指向一个表示用于执行该程序自身的名字的空结尾多字节字符串(或者当执行环境不支持时,为空字符串 "")的开头字符的指针。这些字符串是可以改动的,虽然对它们的改动并不会被传回给执行环境:比如可以用 std::strtok 来使用它们。由 argv 所指向的数组的大小至少为 argc+1,其最后一个元素 argv[argc] 保证为一个空指针。

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼我这种方法为什么图形只能显示一下就不见了,这什么?能不能用在双曲线上??能的话改哪里??#include#includefloat a,b,c,xmin,xmax,max; void menu(){printf("\n*...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    我这种方法为什么图形只能显示一下就不见了,这是为什么?能不能用在双曲线上??能的话改哪里??

    #include#includefloat a,b,c,xmin,xmax,max; void menu(){printf("\n*****welcome*****\n");

    printf("\n 1.input coefficient");

    printf("\n 2.input extent");

    printf("\n 3.draw function curve");

    printf("\n 4.quit");

    printf("\n*****************\n");}

    void fun1()

    { printf("input a,b,c\n");

    scanf("%f,%f,%f",&a,&b,&c);

    }void fun2()

    { printf("input xmin,xmax\n"); scanf("%f,%f",&xmin,&xmax);}

    void funmax()

    { float m,n; if(xmin<0) m=-xmin; else m=xmin; if(xmax<0) n=-xmax; else n=xmax; if(m>=n) max=m; else max=n;}

    float funx(float max_x)

    { return(max_x/2/max);}float funy(float max_y)

    {float d; d=max_y/2/(a*max*max+b*max+c); if(d>0.6) d=0.6; if(d<0.0026) d=0.0026; return(d);}

    void fun3()

    { int max_x,max_y; int graphdriver=DETECT,graphmode;

    float x1,y1,x2,y2,x,coe_x,coe_y; initgraph(&graphdriver,&graphmode,"");

    cleardevice(); max_x=getmaxx(); max_y=getmaxy();

    funmax();

    coe_x=funx(max_x); coe_y=funy(max_y); line(0,240,640,240); line(320,0,320,480); line(640,240,635,235); line(640,240,635,245); line(320,0,315,5); line(320,0,325,5); outtextxy(320,240,"(0,0)");

    outtextxy(620,240,"x"); outtextxy(320,10,"y");

    x1=max_x/2+xmin*coe_x,y1=max_y/2-(a*xmin*coe_x*xmin*coe_x+b*xmin*coe_x+c)*coe_y;

    moveto((int)x1,(int)y1); for(x=xmin*coe_x;x<=xmax*coe_x;x++)

    { x2=max_x/2+x,y2=max_y/2-(a*x*x+b*x+c)*coe_y;

    lineto((int)x2,(int)y2); }void getch();closegraph(); }

    void main()

    { int n; menu(); while(1)

    { scanf("%d",&n); switch(n)

    { case 1:fun1();break;

    case 2:fun2();break;

    case 3:fun3();break;

    case 4:exit(0);

    default:printf("\n error \n"); } }}

    展开全文
  • 我大一上学期写的贪吃蛇程序,现在发上来大家共享一下,如果有什么不懂的我的资源里还有一份这个程序的课程设计报告,可以参考一下。 (一楼俄罗斯方块你妹啊)
  • 什么是语句呢?其实,不用刻意用概念来约束,在熟练了C语言之后, 自然而然就知道什么时候该加分号什么时候不该加分号了,如果一定要清楚的定义, 那么就是: 变量定义该加分号 (int para;) 变量...
  • 计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。
  • 编译器会报warning: #1-D: last ...C 语言在 Unix 中发明的,为 Unix 系统的编程语言,它对文件的处理遵循一个基本的原则: 文件流式的,可以被任意的拼接并且拼接后仍然保证完整性。 为了保证这一点,在 U...
  • 课程内容:C基础课程大纲、什么是IDE、IDE的汉化、源程序和可执行程序、关键字、类型、变量、数据、main函数、自定义函数、程序中标点符号和注释、c语言程序的开发步骤。
  • 二.什么是C语言

    2021-03-29 09:30:43
    二.什么是C语言 1.C语言定义:C语言是一种结构化语言,层次清晰,可按模块的方式对程序进行编写. 2.C语言的结构特点 一个源程序不论由多少个文件组成,都有一个且仅有一个main函数(主函数);
  • 一个c源程序至少包含一个main函数,也可以包含一个main函数和若干其他函数。函数c程序的基本单位。 被调用的函数可以系统提供的库函数,也可以用户根据需要自己编写设计的函数。 C函数库非常丰富,ANSI C提供...
  • 茫然找不到方向奇怪的C语言代码对于初学者来说,阅读项目代码学习和巩固C语言编程能力的一个好方法——从前辈们的一些优秀C语言项目中,我们能够学到很多编写程序方面的思考方式,也就是...
  • 标识符和关键字(一)标识符标识符用来表示源程序中自定义对象名称的符号。其中的自定义对象可以常量、变量、数组、结构、语句标号以及函数等。在C51语言中,标识符可以由字母(a~z,A~Z)、数字(0~9)和下划线“_...
  • C语言源程序的编译过程是怎样的? 简述C语言的特点 C/C++程序都是由函数组成的其中最主要的不可缺少的函数是哪一个举例说明该函数的结构 函数的返回值是通过什么语句来实现的它的格式是什么? 在编写C程序时为什么要...
  • 怎么用C语言打开一个应用程序怎样用C语言打开文件夹(代码)在C语言中,对文件夹的操作,专业的说法称为"切换路径/目录",而不是"打开",因为文件夹,并不一个"真正的文件",而只是一个访问文件的目录. 用C语言中的函数...
  • 添加了删除代码中的空行 <code>#include <stdio.h> #define MAX_LENGTH 10000 /* C程序最多的字符个数 */ #define IN_MULTI_ANN 3 /* 当前处于多行注释 */ #define IN_SINGLE_ANN 2 /* 当前处于单行注释 ...
  • 方法有两种: 第一种将C++中的面向对象特征去掉,先全部理解代码的逻辑,然后改写;...你可以一个类一个类的改没有什么太高的难度,如果不是笔误的话,几乎不会出错,而且根本不需要理解程序逻辑, 也许改完..
  • 程序设计和C语言

    2021-03-19 21:07:27
    编译预处理指令:C编译系统在对源程序进行“翻译”前,先用一个预处理器对预处理指令进行预处理 3、C预言程序的结构 (1)一个程序由一个或者多个源程序文件组成 源程序文件包括预处理指令、全局声明、函数定义 (2...
  • 翻译环境源程序代码翻译成机器所能识别的二进令;  执行环境执行已经翻译好的代码。 翻译环境:程序中的各个源代码通过编译器形成目标文件,每个目标文件在链接器中集合,链接器可以引入标准c
  • C语言中的库是什么

    2016-09-16 15:56:00
    如果这些函数具有通用性,一般的方法将它们作成头文件,当需要时用“#include”命令将其包含到源程序之中,以提高编程效率。但在特定的程序中一般仅使用这些函数的一部分,若用上述方法包含所有函数,编译器在...
  • C语言程序设计 第1章 一个C程序是什么构成的 函数的描述形式是怎样的 函数体是怎样构成的 main函数跟其他函数有些什么不同 注释起何作用是否对程序产生影响 用源程序产生可执行程序应该经过哪些步骤 第2章 标识符...
  • 方法提示 计算机语言类课程知识点较多平时要注意积累...C 程序的编译和运行过程 C语言程序设计教程 程序是什么 程序一词来自生活通常指完成某件事情的一种既定的方式和过程可以把程序看成对一系列动作的执行过程的描述
  • C程序设计 第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言...1.1什么是计算机程序 计算机程序一组计算机能够识别和执行的指令 1.5运行C程序的步骤与方法 一个程序包含多个源程序文件则需要
  • 精品文档精品文档PAGEPAGE28精品文档PAGEC语言程序设计试卷,C++语言程序设计试题及答案一、单项选择题(每题1分,共20分)C语言规定:在一个源程序中,main函数的位置(C)。必须在最开始必须在系统调用的库函数的后面...
  • 相对于编译型语言,解释型语言代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript / Perl /Shell等都解释型语言。Java虽然优化过,但我觉得他还是...
  • 不应该你写的程序的问题 用杀毒软件查杀下看看先|||你机子里有病毒 在编译的时候就自动把病毒编译进去了这病毒不多啊 lz中大彩了赶快杀毒把|||您老中外壳型病毒了要用卡巴斯基才能最好地杀掉瑞星之类的杀毒软件更...
  • 例如, pf1+pf2是什么意思呢?毫无实际意义。 ②两指针变量进行关系运算 指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的关系。例如: pf1==pf2表示pf1和pf2指向同一数组元素 pf1>pf2表示pf1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 764
精华内容 305
关键字:

c语言源程序是什么

c语言 订阅