C语言是大部分人接触的第一门计算机语言,虽然很多学校将C作为一门初始语言,但是其难度还是有的。计算机只具有一维思想,我们需要通过计算机语言将二维或三维的问题或者现象转化为一维,让计算机执行。这个转化过程就是难度所在。
本文只是对c代码进行一个简单的介绍:

一段C的简单代码

#include <stdio.h>   //预处理指令
int main ( )         //main函数,(void修饰无return,其余类型修饰必须有return)
{                    //函数开始标志printf("Helloword !");   //{}大括号内所有的代码都称为函数体return 0;         //函数返回值(刚开始写0即可,在函数部分会开始改变)
}                    //函数结束标志在这里插入代码片

初学者并不懂这段代码格式为什么需要这样去写,单纯的只记住这个格式,个人认为,在学习过程中,先应清楚为什么会这样,再去学习

为什么程序开头要写#include:

首先要了解C语言的三个文件 .c文件 (源文件) .o文件 (目标文件) .exe文件(可执行文件)

.c文件 我们自己在vc上写的代码
.o文件 .c文件经过编译生成
.exe文件 .o文件经过链接生成

目标文件和可执行文件必须经过编译链接才可生成,这也就是为什么要在vc6.0中点编译和链接按钮,更新一些的开发环境,直接用ctrl+F5即可代替执行。

但是,编译和链接又做了什么事呢


编译阶段

  1. 将源代码中#include<stdio.h>其中的内容替换至源代码中。C开发者写的stdio.h的代码有近一千行,我们在调用时,只需写此一行代码,就囊括了开发者写的功能
  2. 删除注释,也就是用空格替换,//符号后的内容
  3. #define,通俗来说就是我们自己定义的预处理指令,#include是开发者定义的预处理指令
    #开头的都是预处理指令,在编译阶段中的预处理阶段执行,如上图(预处理等价于预编译)。
  4. 经过上述三步,将c代码翻译成汇编代码

链接阶段

  • (生成的.o文件经过链接器的捆绑,形成一个单一而完整的可执行程序,通时引入标准c库函数中任何被该程序所用到的函数)
  • 将汇编代码翻译成二进制代码,也就是机器指令,也就是010101一串二进制
  • 编译和链接并不止以上所写,对于初学者来说,了解这些已经足够。

为什么是<>中写的是stdio.h:

我们所使用的printf函数是开发者在stdio.h中定义的,当我们调用这个头文件时,vc识别到main函数中有printf,会自动将开发者实现的printf功能提供给我们使用,如果我们不写stdio.h,那么我们在main中写的printf函数就会报错,系统无法识别printf是什么意思。

函数(Java中称为方法);

函数可以说是实现代码功能步骤的一个集合,一个c程序只有一个main函数,我们的编译器在识别到main后,从此处开始执行。

  1. main前的int是函数的返回类型,若此处int改为void,则无返回值,也就是无return 0;这个语句。
  2. main后的()是一个操作符,()告诉vc编译器,它前面的main是一个函数。printf后的()同理;
  3. 操作符是c语言中一个重要的部分,它与各字母结合有着不同的意义

我们可以通过一个特定的指令,重新定义一个程序的函数入口

#pragma comment (linker, "/entry:fun")
//此时定义了一个新入口,fun函数就可以充当main函数的功能,在此指令下编译程序不会报错int fun ()
{printf("1111\n");return 0;
}

以后学习数组时,int arr[5]中,[ ]这也是一个操作符,说明[ ]前面叫做arr的字母是一个数组。

以上只是为初学c语言,对代码格式存有疑惑同学的一个简单通俗解释,其中各个过程并非几句话可以说清。在程序编译及链接部分再详细论述。

c语言代码格式的简单介绍相关推荐

  1. lzo的正确c语言代码,LZO 使用跟介绍

    LZO 使用和介绍 LZO说明 摘要 LZO 是一个用 ANSI C 语言编写的无损压缩库.他能够提供非常快速的压缩和解压功能.解压并不需要内存的支持.即使使用非常大的压缩比例进行缓慢压缩出的数据,依 ...

  2. 英文字典设计c语言代码,一种简单的英文词典排版系统

    <一种简单的英文词典排版系统>由会员分享,可在线阅读,更多相关<一种简单的英文词典排版系统(20页珍藏版)>请在人人文库网上搜索. 1.中国地质大学(武汉)C语言课程设计论文学 ...

  3. Go语言的流程结构简单介绍

    文章目录 流程结构 流程结构 if if的基本表达 特殊用法 switch swith基本用法 fallthrough Type Switch for 基础语法 for语法2 for的range格式 ...

  4. unity贪吃蛇c 语言代码,unity实现简单贪吃蛇游戏

    本文实例为大家共享了unity实现贪吃蛇游戏的详细代码,供大家参考,详细内容如下 首先创建一个头部,编写脚本利用WASD控制头部的移动. Vector3 up=new Vector3(0,1,0); ...

  5. mcem r语言代码_一个简单文本分类任务-EM算法-R语言

    一.问题介绍 概率分布模型中,有时只含有可观测变量,如单硬币投掷模型,对于每个测试样例,硬币最终是正面还是反面是可以观测的.而有时还含有不可观测变量,如三硬币投掷模型.问题这样描述,首先投掷硬币A,如 ...

  6. PEP 8 -- Python代码格式规则

    PEP 8 – Python代码格式规则 PEP: 8 标题: Python代码格式规则(Style Guide for Python Code) 作者: Guido van Rossum (guid ...

  7. 自动化工具之Appium工具简单介绍

    背景 自动化,性能测试,接口测试,开发平台等工作,到底测试的价值在哪里,其实价值来源不断充实与为大众服务,今天简单介绍ui小工具appium攻击. 简单介绍 Appium 是一个自动化测试开源工具,支 ...

  8. 线性回归模型及R语言代码

    基础理论: 线性回归模型是一个简单而有效的模型,曾经在过去的一个世纪中在统计界得到主要的应用. Yi(i=1,-n)是响应随机变量,(x1i,-xpi)是n个实测数据,p是解释变量的数量.€i是残差, ...

  9. Spring EL 表达式的简单介绍和使用

    文章目录 1. 简单介绍 1.1. 什么是 Spring EL 1.2. 为什么要使用 Spring EL 1.3. 如何使用 Spring EL 2. 简单使用 3. EL 表达式解析引擎 3.1. ...

  10. Smali语法简单介绍

    Smali语言其实就是Davlik的寄存器语言: Smali语言就是android的应用程序.apk通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件,文件的展示 ...

最新文章

  1. linux基础-网络基础知识篇
  2. Word中使用代码高亮插件
  3. 21_Android中常见对话框,光传感器,通过重力感应器编写出指南针应用,帧动画,通过Jav代码的方式编写补间动画,通过XML的方式编写补间动画
  4. sde用户下使用sqlplus登录错误ORA-12547: TNS:lost contact
  5. linux cmake变量,linux – CMake错误:此项目中使用了以下变量,但它们设置为NOTFOUND...
  6. 海量数据挖掘MMDS week3:社交网络之社区检测:高级技巧
  7. thinkphp5.0 session驱动方式问题汇总
  8. 新建web项目上传SVN服务器
  9. 软件系统质量属性可用性-稳定性-可靠性-连续性辨析-架构权衡分析方法
  10. 拳皇世界6月13服务器维护,拳皇世界闪退怎么办 对症下药马上好
  11. 别被你的双眼所欺骗!100张神奇的视觉欺骗图
  12. 内核tty框架_串口_tty_shell的关系
  13. MySQL中 反引号、单引号 和 双引号 的区别
  14. 2020年十大返利app排行榜
  15. 如果不坚持,到哪里都是放弃
  16. windows下mysql-5.7.30-winx64解压安装步骤
  17. 黑苹果10.10.3手动开启SSD的TIRM提高硬盘效率
  18. python3-opencv库(4)--图片像素运算,利用加权叠加调节图像对比度和亮度
  19. python 知识图谱 推理_知识图谱推理与实践 (2) -- 基于jena实现规则推理
  20. 2022年一级建造师建设工程项目管理考试模拟试题卷及答案

热门文章

  1. AX2012 R2安装
  2. java实现qq音乐vip歌曲永久下载
  3. 面试题——内网相关(一)
  4. 一个黑客的基本素养——社会工程学
  5. pta冒泡排序c语言_PTA 冒泡排序
  6. C语言数据结构——图
  7. OpenOffice源代码编译及安装
  8. 1、Java语言简介
  9. C语言进制转换以及原补反码位运算介绍
  10. matlab-plot绘制点线图