1 计算机体系结构

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

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

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

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

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

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

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

常见的软件包含运行于服务器端,基于命令行交互的Unix(Solaris),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程序设计

3.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程序,不然程序无法编译运行 */

}

关于VisualStudio2013的一些快捷键:

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

F5 :调试并运行

F11:每次执行一行代码

F10:每次执行一个方法

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

3.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");//打开便签

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

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

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

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

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

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

}

/* 程序的主入口 */

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

command();

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

}

4 Linux C程序设计

开发工具: VIM

运行环境: Linux(RedHeat Enterprise 7)

编译器: gcc

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

4.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来完成编译和链接。

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

5. MacOSX C程序设计

开发工具: XCode6.4

运行环境: MacOSX10.10

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

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

5.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开发大型项目时会提高开发效率以及降低后期的维护成本。

c语言中调用一个程序设计,第一章 C语言程序设计概述相关推荐

  1. 《Go语言圣经》学习笔记 第一章 Go语言入门

    Go语言圣经学习笔记 第一章 Go语言入门 目录 Hello, World 命令行参数 查找重复的行 GIF动画 获取URL 并发获取多个URL Web服务 本章要点 注:学习<Go语言圣经&g ...

  2. PL/SQL程序设计 第一章 PL/SQL 程序设计简介

    PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.除此之外,可以在O ...

  3. 《R语言实战》读书笔记--第一章 R语言介绍

    1.典型的数据分析过程可以总结为一下图形: 注意,在模型建立和验证的过程中,可能需要重新进行数据清理和模型建立. 2.R语言一般用 <- 作为赋值运算符,一般不用 = ,原因待考证.用-> ...

  4. c语言中计算一个字母的序数,C语言编程 输入一串字符统计英文字母的个数

    C语言编程:输入一行字符,至少50个,统计其中英文字母,数字,其他字母个数 楼上那个不能统计空格个数,我这个可以#include#includeintmain(){intcnt_c=0,cnt_n=0 ...

  5. c语言中定义一个十六进制的数,C语言如何定义一个16进制数

    例: int main(){ int a; scanf("%p",&a);//16进制数输入%p是输入一个十六进制的数scanf("%llx",& ...

  6. [转载] 《python程序设计应用教程》第一章 python语言概述

    参考链接: Python语言的优势和应用 第一章 python语言概述 1.1 python语言简介 ① 众多的开源的科学计算软件包都提供了python的调用接口,例如:计算机视觉库OpenCV.三维 ...

  7. 第一章c语言基础知识答案,第一章 C语言的基础知识练习题

    第一章 C语言的基础知识练习题 第一章 C语言的基础知识 第一节 对C语言的初步认识 习题 1. 下列叙述中错误的是 B A)任何一个C程序都必须有且仅有一个main函数,C语言总是从main函数开始 ...

  8. powershell执行c语言文件,c语言中调用shell脚本

    [转]c语言中调用shell脚本 关于在c语言中调用shell脚本,先是在百度上百度了一下 下面的这个应该是说的比较详细的 dreamerkxz.blog.163.com/blog/static/82 ...

  9. 山西农业大学c语言答案,第一章C语言及程序设计概述-东北农业大学教务处.doc...

    全国高等农林院校"十一五"规划教材 C语言程序设计 孙力 主编 中国农业出版社 内容简介 本书是全国高等农林院校"十一五"规划教材之一. 全书共11章,分别介绍 ...

最新文章

  1. linux 屏幕输出 高亮_如何设置SecureCRT窗口输出代码关键字高亮设置
  2. 部署 DevStack - 每天5分钟玩转 OpenStack(17)
  3. Codeforces Round #660 (Div. 2)
  4. 原来做的一个语义搜索软件的界面
  5. C++之指针探究(十二):指针、下标、数组及其作函数参数
  6. 习题3.3--C语言程序设计第三版课后习题(苏小红)
  7. c语言编译题a b,C语言考试试题A卷.doc
  8. 京东评论爬虫(详解)
  9. 个人阅读作业+个人总结
  10. 二十、融会贯通之全流程操作
  11. agc024F Simple Subsequence Problem
  12. 炼石白小勇:合规与实战推动密码产业发展
  13. 日记 or 小小说 :想进腾讯的师弟师妹们,别学我 (二)
  14. python数据处理——取dataframe的一列或一行
  15. CRT (C run-time library)简介
  16. Kersion CMS 标签使用大全
  17. 1——从IOP思想开始
  18. 10进制转换16进制C代码实现
  19. 第一次PLC接线——PLC、电磁阀
  20. 解决暗影精灵6win键失效的问题

热门文章

  1. 【愚公系列】2021年12月 Java教学课程 34-接口
  2. 名人故事之 Trip Hawkins
  3. deepin win10字体_win10下安装deepin系统(小白版)
  4. 两个数之间的偶数(奇数)算法
  5. android相关技术总结
  6. 录教程:录屏、录音、显示按键、鼠标高亮
  7. 剪辑小技巧,多个横屏视频如何批量转换成竖屏播放
  8. 【游戏试玩】率土之滨,启动。率土之滨,关闭。
  9. 制造恶作剧切断TCP连接和进程之间的关联
  10. transactionTemplate???