基于工作过程的c语言程序设计,第一章 C语言程序设计概述

1 计算机体系结构

计算机主要由硬件和软件的协作完成生活和工作中的绝大多数事情,例如听音乐,看电影,上网聊天,购物等等。

硬件主要包含CPU,内存,外存,IO设备等组成。

CPU:负责从内存中读取进程的数据进行各种运算和控制其他设备

内存:分为RAM(随机访问存储器)和ROM(只读存储器,例如BIOS),只是负责暂时存储数据,断电后数据会消失。做程序开发时一般配置的内存为8-16G,而当台服务器的内存一般为64G。

外存:用于永久存储数据,常见的外存有机械硬盘和固态硬盘,其中固态硬盘的读写性能高于机械硬盘。

IO设备:主要是完成数据的输入输出,常见的IO设备包含鼠标键盘,声卡显卡等等。

软件的出现实现了人和计算机更好的交互

常见的软件包含运行于服务器端,基于命令行交互的Unix(Solaris11),Linux(RedHeat Enterprise 7).

运行于PC端,基于图形界面交互的Windows10(PC),Linux(Ubuntu16),MacOSX10.10。

运行于手机或者嵌入式设备,基于语音手势,体感交互的Android,IOS。Android是基于Linux内核发展而来,IOS是基于MacOSX衍生而来。

还有些运行在系统软件之上的应用软件,例如微信,支付宝,天猫等等。而系统软件底层都是采用C/C++编写的。

2 编程语言发展史

程序就是由指令系统加上数据集组成,而每个CPU都有自己的指令系统(由二进制的机器码01序列组成),PC上是X86指令系统,而手机上是ARM指令系统,这也就意味着PC上的程序不加修改不能直接到手机上运行,手机上的程序也是如此。这也就是最早的机器语言的由来,它的主要特点是高效,不能移植,可读性差,而且后期维护非常困难,想象一下要记那么多的机器指令是多么艰难的事情。

斗转星移,汇编语言和编译器的出现解决了需要记住非常多的机器指令的难题,但是还是没有从根本上解决移植性的问题,只是将机器指令转换为易懂的英文单词,然后由编译器编译成机器指令,因为计算机终归揭底智能识别0001110100110机器指令

这里的代码是演示Windows上将汇编语言嵌套在C语言中使用,完成两个变量相加的结果

void use_asm(){

int a, b, c=0;

a = 4;

b = 6;

printf("a = %d \t b=%d\tc=%d \n",a,b,c);

_asm{

mov eax, a;

add eax, b;

mov c ,eax;

}

printf("a = %d \t b=%d\tc=%d\n", a, b, c);

}

void main(){

use_asm();

getchar();

}

时光再流转,在1972年C语言的诞生,凭借着可移植性,和汇编差不多的高效以及无所不能的强大功能,引领了IT行业的发展,Unix,Windows,Linux都是采用C语言编写,但是它也存在着对平台库依赖比较严重,只有标准C的部分是可移植(所有的主流操作系统都实现了C语言的标准库函数)等缺点。而后期的C++,Java,C#等编程语言在很多方面都吸收了C语言的优点,新增了面向对象(OO)等诸多的特性,适合做应用开发。

接下来看看运行在各大主流操作系统的C程序,顺便简要介绍对应平台的IDE

3 Windows C程序设计

1 Windows C HelloWorld

开发工具: VisualStudio2013

运行环境: Windows7

编译器: CL(VisualStudio2013提供的C语言编译器)

//导入共通的头文件

#include //#表示预处理,在预编译时执行 头文件中只是包含了函数的声明,函数的实现位于源文件中

#include

#include

//Windows平台的C语言版HelloWorld

#include "common.h" //包含共同的头文件

/* * 第一个C语言程序 * C语言的程序若想编译并运行,必须声明 main方法(有且只能有一个,作为程序的主入口),具体如下。 * @author tony 18601767221@163.com * @date 2015/11/11 */

void main(){ //void 表示main函数返回值为空

//这里的程序会从main函数的第一行执行到最后一行

printf("Hello World In Windows7 \n"); // BUG :程序中可能会出错的地方 断点:F11测试程序一步一步执行,然后观察程序执行结果

printf("Hello World In Windows7 again\n"); //每个语句以";"结束

getchar(); //等待输入任意字符回车就退出程序

/* C语言编译器不能识别中文符号,必须在英文状态下输入 VisualStudio2013运行时,解决方案的单个项目中只能有一个main程序,不然程序无法编译运行 */

}

头文件(.h):包含了函数的声明,就像字典的目录

源文件(.c):包含了函数的实现,就像字典的全书

//:表示单行注释,注释的内容会被编译器忽略

/**/:表示多行注释,注释多行。开发中应该多写注释,说明代码的用途

关于VisualStudio2013的一些快捷键:

先介绍几个调试的快捷键吧,初接触C语言,可以使用IDE的调试功能来观察程序执行的过程

F5 :调试并运行

F11:每次执行一行代码

F10:每次执行一个方法

Ctrl+Alt+F7:重新生成解决方案,也就相当于重新编译代码

2 使用标准C库函数system完成Windows系统程序的命令调用

在主流操作系统中可以使用命令来完成许多功能,而在C语言中就可以使用位于stdlib(标准库)的头文件中的system函数完成各大操作系统的命令调用

#include "common.h" //包含共同的头文件

/* * @author tony 18601767221@163.com * @date 2015/11/12 */

/* windows系统下的常用系统程序命令 */

void command(){

system("calc");//打开计算器

system("notepad");//打开记事本

system("stikynot");//打开便签 该命令在cmd下可以打开便签,system函数无法调用成功

system("appwiz.cpl");//打开程序和功能

system("firewall.cpl");//打开防火墙

system("explorer");//打开资源管理器

system("regedit");//注册表

system("shutdown -s -t 600");//10分钟以后关机

system("shutdown -a");//取消关机

system("desk.cpl");//屏幕分辨率

system("taskmgr");//任务管理器

}

/* 程序的主入口 */

void main(){//void 表示main函数返回值为空

command();

getchar();//等待输入任意字符退出程序

}

4 Linux C程序设计

开发工具: VIM

运行环境: Linux(RedHeat Enterprise 7)

编译器: gcc

系统说明:采用VMWare WorkStation 虚拟了一个Linux(RedHeat Enterprise 7),RedHeat Enterprise或者开源版CentOS7是最常用的企业版Linux,安装教程自己网上收罗吧。其实Windows也是一个虚拟机,只是它是宿主机。

1 Linux C HelloWorld

VIM是一个基于命令行的强大编辑器,这里说下简单使用

通常都是采用SSH工具连接远程的Linux服务器,推荐使用SecureCRT,配置主机名,用户和密码之后就能连接,默认端口为22.

在命令行下输入VIM helloworld.c,然后”i”进入编辑模式,输入如下代码

#include //在Linux系统中也是有C语言的标准库函数

void main(){

printf("Hello World In CentOS7\n");

printf("Hello World In CentOS7 Again\n");

}

然后按下ESC,输入: wq即可编辑并保存完成在你登录之后的路径.然后使用gcc编译名为HelloWorld.c的源文件,gcc编译器有几个编译选项,借助这几个选项了解下Linux系统的C语言编译链接的过程。

C语言编译运行第一步-预编译:

将#include的头文件替换到源程序中,可以使用gcc -E HelloWorld.c -o HelloWorld.o 执行预编译,查看将头文件中的内容替换到源文件后的结果。

C语言编译运行第二步-转汇编:

操作系统都不认识C语言编写的源代码,必须转换成对应的汇编代码。可以使用gcc -S HelloWorld.s -o HelloWorld.c将源代码编译成汇编代码

C语言编译运行第三步-链接:

在生成汇编代码之后,将系统库文件以及启动代码链接组成二进制的可执行文件。可以使用gcc -o HelloWorld.o HelloWorld.c来完成编译和链接。

2 使用标准C库函数system完成Linux系统调用

#include // import stand libary head file

int main(){

system("ps -a"); //show process list

system("who am i"); // current loign user

system("gedit"); // start gedit process

}

5. MacOSX C程序设计

开发工具: XCode6.4

运行环境: MacOSX10.10

编译工具:XCode自带的C语言编译器

系统说明:采用VMWare WorkStation虚拟一个MacOSX10.10操作系统并下载XCode6.4,需要解锁插件,具体过程网上搜罗。

1 MacOSX C HelloWorld

#include

int main(int argc, const char * argv[]) {

// insert code here...

printf("Hello, World!\n"); //

return 0; //返回整数0表示程序正常退出

}

在开发C/C++程序时还有一些跨平台的IDE,例如QT,CodeBlocks。在使用IDE开发大型项目时会提高开发效率以及降低后期的维护成本。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值