c语言简单介绍&编译过程


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

一段C的简单代码

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

void main()
{}//C99之前main函数的写法

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

为什么要写#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语言,对代码格式存有疑惑同学的一个简单通俗解释,其中各个过程并非几句话可以说清。在程序编译及链接部分再详细论述。

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值