营销型网站建设案例,网站建设和网页设计的关系,网站建设申请费用,我常用的网站有哪些类型有哪些类型有哪些第一个C语言程序
我们有两种方式从计算机获得信息#xff1a;一是看屏幕上的文字、图片、视频等#xff0c;二是听从喇叭发出来的声音。让喇叭发出声音目前还比较麻烦#xff0c;我们先来看看如何在屏幕上显示一些文字吧。 在屏幕上显示文字非常简单#xff0c;只需要一个…第一个C语言程序
我们有两种方式从计算机获得信息一是看屏幕上的文字、图片、视频等二是听从喇叭发出来的声音。让喇叭发出声音目前还比较麻烦我们先来看看如何在屏幕上显示一些文字吧。 在屏幕上显示文字非常简单只需要一个语句例如下面的代码会让屏幕显示出“C语言中文网”
puts(C语言中文网);
这里有一个生疏的词汇puts用来让计算机在屏幕上显示文字。 更加专业的称呼
在屏幕上显示文字叫做输出Output每个文字都是一个字符Character多个字符组合起来就是一个字符序列叫做字符串String。 puts 是 output string 的缩写意思是”输出字符串“。 在C语言中字符串需要用双引号 包围起来C语言中文网什么也不是计算机不认识它C语言中文网才是字符串。 puts 在输出字符串的时候需要将字符串放在( )内。 在汉语和英语中分别使用。和.表示一句话的结束而在C语言中使用;表示一个语句的结束。puts(C语言中文网)表达了完整的意思是一个完整的语句需要在最后加上;表示当前语句结束了。 总结起来上面的语句可以分为三个部分
puts( )命令计算机输出字符串C语言中文网是要输出的内容;表示语句结束。
C语言程序的整体框架
puts 可以在显示器上输出内容但是仅有 puts 是不够的程序不能运行还需要添加其他代码构成一个完整的框架。完整的程序如下
#include stdio.h
int main()
{puts(C语言中文网);return 0;
}
第 1~3 行、第 5~6 行是固定的所有C语言源代码都必须有这几行。你暂时不需要理解它们是什么意思反正有这个就是了以后会慢慢讲解。 但是请记住今后我们写的所有类似 puts 这样的语句都必须放在{ }之间才有效。 上面的代码看起来枯燥无趣不好区分各个语句我们不妨来给它们加上颜色和行号如下所示 #include stdio.hint main(){ puts(C语言中文网); return 0;}
颜色和行号是笔者自己加上去的主要是为了让大家阅读方便明显地区分各个语句C语言本身没有对这些作要求你可以随意设置各个字符的颜色也可以没有颜色。 这就是我们的第一个C语言程序它非常简单带领我们进入了C语言的大门。
编程时请选择正确的输入法严格区分中英文 图搜狗输入法半角和全角 我们知道在编程时要使用英文半角输入法。为了加强练习出个选择题请大家判断下面哪一种描述是正确的 A) 编程的时候不用在意中英文符号的区别。 B) 在源代码的任何地方都不能出现中文汉字、字符等。 C) 感叹号没有中文和英文的区别。 D) 编程时使用的英文引号也有左引号和右引号的区别。 E) 中文和英文模式下的制表符键盘tab键输入效果一致。 答案E 选项正确。
什么是源文件
在开发软件的过程中我们需要将编写好的代码Code保存到一个文件中这样代码才不会丢失才能够被编译器找到才能最终变成可执行文件。这种用来保存代码的文件就叫做源文件Source File。
我们将在《 编译和链接》一节中讲解编译器的概念。 每种编程语言的源文件都有特定的后缀以方便被编译器识别被程序员理解。源文件后缀大都根据编程语言本身的名字来命名例如
C语言源文件的后缀是.cC语言C Plus Plus源文件的后缀是.cppJava 源文件的后缀是.javaPython 源文件的后缀是.pyJavaScript 源文件后置是.js。 源文件其实就是纯文本文件它的内部并没有特殊格式能证明这一结论的典型例子是在 Windows 下用记事本程序新建一个文本文档并命名为demo.txt输入一段C语言代码并保存然后将该文件强制重命名为demo.c后缀从.txt变成了.c发现编译器依然能够正确识别其中的C语言代码并顺利生成可执行文件。 源文件的后缀仅仅是为了表明该文件中保存的是某种语言的代码例如.c文件中保存的是C语言代码这样程序员更加容易区分编译器也更加容易识别它并不会导致该文件的内部格式发生改变。C 是站在C语言的肩膀上发展起来的是在C语言的基础上进行的扩展C 包含了C语言的全部内容请猛击《C语言和C到底有什么关系》一文了解更多将C语言代码放在.cpp文件中不会有错很多初学者都是这么做的很多大学老师也是这么教的。但是我还是强烈建议将C语言代码放在.c文件中这样能够更加严格地遵循C语言的语法也能够更加清晰地了解C语言和C的区别。
C语言编译和链接详解通俗易懂深入本质
件组合起来。 再次强调编译是针对一个源文件的有多少个源文件就需要编译多少次就会生成多少个目标文件。
总结
不管我们编写的代码有多么简单都必须经过「编译 -- 链接」的过程才能生成可执行文件
编译就是将我们编写的源代码“翻译”成计算机可以识别的二进制格式它们以目标文件的形式存在链接就是一个“打包”的过程它将所有的目标文件以及系统组件组合成一个可执行文件。 如果不是特别强调一般情况下我们所说的“编译器”实际上也包括了链接器比如你使用了哪种编译器去哪里下载C语言编译器我的编译器为什么报错了呢
C语言编译器C语言编程软件完全攻略包含所有平台
嵌入式系统
而在嵌入式系统方面可用的C语言编译器就非常丰富了比如
用于 Keil 公司 51 系列单片机的 Keil C51 编译器当前大红大紫的 Arduino 板搭载的开发套件可用针对 AVR 微控制器的 AVR GCC 编译器ARM 自己出的 ADSARM Development Suite、RVDSRealView Development Suite和当前最新的 DS-5 StudioDSP 设计商 TITexas Instruments的 CCSCode Composer StudioDSP 设计商 ADIAnalog DevicesInc.的 Visual DSP 编译器等等。 通常用于嵌入式系统开发的编译工具链都没有免费版本而且一般需要通过国内代理进行购买。所以这对于个人开发者或者嵌入式系统爱好者而言是一道不低的门槛。 不过 Arduino 的开发套件是可免费下载使用的并且用它做开发板连接调试也十分简单。Arduino 所采用的C编译器是基于 GCC 的。 还有像树莓派Raspberry Pi这种迷你电脑可以直接使用 GCC 和 Clang 编译器。此外还有像 nVidia 公司推出的 Jetson TK 系列开发板也可直接使用 GCC 和 Clang 编译器。树莓派与 Jetson TK 都默认安装了 Linux 操作系统。 在嵌入式领域一般比较低端的单片机比如 8 位的 MCU 所对应的C编译器可能只支持 C90 标准有些甚至连 C90 标准的很多特性都不支持。因为它们一方面内存小ROM 的容量也小另一方面本身处理器机能就十分有限有些甚至无法支持函数指针因为处理器本身不包含通过寄存器做间接过程调用的指令。 而像 32 位处理器或 DSP一般都至少能支持 C99 标准它们本身的性能也十分强大。而像 ARM 出的 RVDS 编译器甚至可用 GNU 语法扩展。 下图展示了上述C语言编译器的分类。 什么是IDE集成开发环境
实际开发中除了编译器是必须的工具我们往往还需要很多其他辅助软件例如
编辑器用来编写代码并且给代码着色以方便阅读代码提示器输入部分代码即可提示全部代码加速代码的编写过程调试器观察程序的每一个运行步骤发现程序的逻辑错误项目管理工具对程序涉及到的所有资源进行管理包括源文件、图片、视频、第三方库等漂亮的界面各种按钮、面板、菜单、窗口等控件整齐排布操作更方便。 这些工具通常被打包在一起统一发布和安装例如 Visual Studio、Dev C、Xcode、Visual C 6.0、C-Free、Code::Blocks 等它们统称为集成开发环境IDEIntegrated Development Environment。 集成开发环境就是一系列开发工具的组合套装。这就好比台式机一个台式机的核心部件是主机有了主机就能独立工作了但是我们在购买台式机时往往还要附带上显示器、键盘、鼠标、U盘、摄像头等外围设备因为只有主机太不方便了必须有外设才能玩的爽。 集成开发环境也是这个道理只有编译器不方便所以还要增加其他的辅助工具。在实际开发中我一般也是使用集成开发环境而不是单独地使用编译器。
通俗的称呼
有时候为了称呼方便或者初学者没有严格区分概念也会将C语言集成开发环境称作“C语言编译器”或者“C语言编程软件”。这里大家不要认为是一种错误就把它当做“乡间俗语”吧。
什么是工程/项目
一个真正的程序也可以说软件往往包含多项功能每一项功能都需要几十行甚至几千行、几万行的代码来实现如果我们将这些代码都放到一个源文件中那将会让人崩溃不但源文件打开速度极慢代码的编写和维护也将变得非常困难。 在实际开发中程序员都是将这些代码分门别类地放到多个源文件中。除了这些成千上万行的代码一个程序往往还要包含图片、视频、音频、控件、库也可以说框架等其它资源它们也都是一个一个地文件。 为了有效地管理这些种类繁杂、数目众多的文件我们有理由把它们都放到一个目录文件夹下并且这个目录下只存放与当前程序有关的资源。实际上 IDE 也是这么做的它会为每一个程序都创建一个专门的目录将用到的所有文件都集中到这个目录下并对它们进行便捷的管理比如重命名、删除文件、编辑文件等。 这个为当前程序配备的专用文件夹在 IDE 中也有一个专门的称呼叫做“Project”翻译过来就是“工程”或者“项目”。在 Visual C 6.0 下这叫做一个“工程”而在 Visual Studio 下这又叫做一个“项目”它们只是单词“Project”的不同翻译而已实际上是一个概念。
工程类型/项目类型
“程序”是一个比较宽泛的称呼它可以细分为很多种类例如
有的程序不带界面完全是“黑屏”的只能输入一些字符或者命令称为控制台程序Console Application例如 Windows 下的 cmd.exeLinux 或 Mac OS 下的终端Terminal。有的程序带界面看起来很漂亮能够使用鼠标点击称为GUI程序Graphical User Interface Program例如 QQ、迅雷、Chrome 等。有的程序不单独出现而是作为其它程序的一个组成部分普通用户很难接触到它们例如静态库、动态库等。 不同的程序对应不同的工程类型项目类型使用 IDE 时必须选择正确的工程类型才能创建出我们想要的程序。换句话说IDE 包含了多种工程类型不同的工程类型会创建出不同的程序。 不同的工程类型本质上是对 IDE 中各个参数的不同设置我们也可以创建一个空白的工程类型然后自己去设置各种参数不过一般不这样做。 控制台程序对应的工程类型为“Win32控制台程序Win32 Console Application”GUI 程序对应的工程类型为“Win32程序Win32 Application”。 控制台程序是 DOS 时代的产物了它没有复杂的功能没有漂亮的界面只能看到一些文字虽然枯燥无趣也不实用但是它非常简单不受界面的干扰所以适合入门我强烈建议初学者从控制台程序学起。等大家对编程掌握的比较熟练了能编写上百行的代码了再慢慢过渡到 GUI 程序。
哪款C语言编译器IDE适合初学者
Code::Blocks 是一款开源、跨平台、免费的 C/C IDE它和 Dev C 非常类似小巧灵活易于安装和卸载不过它的界面要比 Dev C 复杂一些不如 Dev C 来得清爽。
5) Turbo C
Turbo C 是一款古老的、DOS 年代的C语言开发工具程序员只能使用键盘来操作 Turbo C不能使用鼠标所以非常不方便。但是 Turbo C 集成了一套图形库可以在控制台程序中画图看起来非常炫酷所以至今仍然有人在使用。
6) C-Free
C-Free 是一款国产的 Windows 下的C/C IDE最新版本是 5.0整个软件才 14M非常轻巧安装也简单界面也比 Dev C 漂亮。C-Free 的缺点也是调试功能弱。可惜的是C-Free 已经多年不更新了组件都老了只能在 XP、Win7 下运行在 Win8、Win10 下可能会存在兼容性问题。 下面我们给出了各种 IDE含不同版本的下载地址、安装方法以及使用教程并以红色字体附带了建议。
VS2022 [力荐] S2022下载地址和安装教程图解使用VS2022编写C语言程序
VS2019 [荐] S2019下载地址和安装教程图解使用VS2019编写C语言程序VS2017 VS2017下载地址和安装教程图解使用VS2017编写C语言程序VS2015 VS2015下载地址和安装教程图解使用VS2015编写C语言程序Dev C [荐] Dev C下载地址和安装教程图解使用Dev C编写C语言程序VC6.0 [不建议] VC6.0VC6.0下载地址和安装教程图解使用VC6.0VC6.0编写C语言程序Code::Blocks Code::Blocks下载地址和安装教程图解Code::Blocks汉化教程附带汉化包使用Code::Blocks编写C语言程序Turbo C [不建议] Turbo C 2.0下载地址和安装教程图解使用Turbo C 2.0编写C语言程序C-Free [不建议] C-Free 5.0下载地址和激活教程图解使用C-Free编写C语言程序
Linux 下如何选择 IDE
Linux 下可以不使用 IDE只使用 GCC 编译器和一个文本编辑器例如 Gedit即可这样对初学者理解C语言程序的生成过程非常有帮助请参考Linux GCC简明教程使用GCC编写C语言程序 当然如果你希望使用 IDE那么可以选择 CodeLite、Code::Blocks、Anjuta、Eclipse、NetBeans 等。
Mac OS 下如何选择 IDE
Mac OS 下推荐使用 Apple 官方开发的 Xcode在 APP Store 即可下载具体请参见Xcode简明教程使用Xcode编写C语言程序 另外Visual Studio 也推出了 Mac 版本已经习惯了 Visual Studio 的用户可以高兴一把了。
C语言程序的错误和警告 图7C-Free 5.0 的错误提示 可以看出C-Free 的错误提示信息比较少不方便程序员纠错。VC 和 VS 的错误信息类似只是中英文的差别。 下图分析了 VC 6.0 的错误信息 图8错误信息说明 翻译源文件 E:\cDemo\hello.c 第5行发生了语法错误错误代码是 C2143原因是 return 前面丢失了 ;。 我敢保证你写的代码肯定会发生错误一定要有分析错误的能力这是一个合格的程序员必备的技能。
分析第一个C语言程序 前面我们给出了一段最简单的C语言代码并演示了如何在不同的平台下进行编译这节我们来分析一下这段代码让读者有个整体的认识。代码如下#include stdio.hint main(){puts(C语言中文网);return 0;}
函数的概念
关于库的概念我们已在《 不要这样学习C语言这是一个坑》中进行了详细介绍。 除了库函数我们还可以编写自己的函数拓展程序的功能。自己编写的函数称为自定义函数。自定义函数和库函数在编写和使用方式上完全相同只是由不同的机构来编写。 示例中第2~6行代码就是我们自己编写的一个函数。main 是函数的名字( ) 表明这是函数定义{ } 之间的代码是函数要实现的功能。 函数可以接收待处理的数据同样可以将处理结果告诉我们使用return可以告知处理结果。示例中第5行代码表明main 函数的处理结果是整数 0。return 可以翻译为“返回”所以函数的处理结果被称为返回值Return Value。 第2行代码中int 是 integer 的简写意为“整数”。它告诉我们函数的返回值是整数。 需要注意的是示例中的自定义函数必须命名为 main。C语言规定一个程序必须有且只有一个 main 函数。main 被称为主函数是程序的入口函数程序运行时从 main 函数开始直到 main 函数结束遇到 return 或者执行到函数末尾时函数才结束。 也就是说没有 main 函数程序将不知道从哪里开始执行运行时会报错。 综上所述第2~6行代码定义了主函数 main它的返回值是整数 0程序将从这里开始执行。main 函数的返回值在程序运行结束时由系统接收。
关于自定义函数的更多内容我们将在《 C语言函数》一章中详细讲解这里不再展开讨论。 有的教材中将 main 函数写作
void main()
{// Some Code...
}
这在 VC6.0 下能够通过编译但在 C-Free、GCC 中却会报错因为这不是标准的 main 函数的写法大家不要被误导最好按照示例中的格式来写。
头文件的概念
还有最后一个问题示例中第1行的#include stdio.h是什么意思呢 C语言开发者们编写了很多常用函数并分门别类的放在了不同的文件这些文件就称为头文件header file。每个头文件中都包含了若干个功能类似的函数调用某个函数时要引入对应的头文件否则编译器找不到函数。
实际上头文件往往只包含函数的说明也就是告诉我们函数怎么用而函数本身保存在其他文件中在链接时才会找到。对于初学者可以暂时理解为头文件中包含了若干函数。 引入头文件使用#include命令并将文件名放在 中#include 和 之间可以有空格也可以没有。 头文件以.h为后缀而C语言代码文件以.c为后缀它们都是文本文件没有本质上的区别#include 命令的作用也仅仅是将头文件中的文本复制到当前文件然后和当前文件一起编译。你可以尝试将头文件中的内容复制到当前文件那样也可以不引入头文件。.h中代码的语法规则和.c中是一样的你也可以#include xxx.c这是完全正确的。不过实际开发中没有人会这样做这样看起来非常不专业也不规范。 较早的C语言标准库包含了15个头文件stdio.h 和 stdlib.h 是最常用的两个
stdio 是 standard input output 的缩写stdio.h 被称为“标准输入输出文件”包含的函数大都和输入输出有关puts() 就是其中之一。stdlib 是 standard library 的缩写stdlib.h 被称为“标准库文件”包含的函数比较杂乱多是一些通用工具型函数system() 就是其中之一。
最后的总结
初学编程有很多基本概念需要了解本节就涉及到很多建议大家把上面的内容多读几遍必将有所收获。 本节开头的示例是一个C语言程序的基本结构我们不妨整理一下思路从整体上再分析一遍 1) 第1行引入头文件 stdio.h这是编程中最常用的一个头文件。头文件不是必须要引入的我们用到了 puts 函数所以才引入 stdio.h。例如下面的代码完全正确 int main(){return 0;}
我们没有调用任何函数所以不必引入头文件。 2) 第2行开始定义主函数 main。main 是程序的入口函数一个C程序必须有 main 函数而且只能有一个。 3) 第4行调用 puts 函数向显示器输出字符串。 4) 第5行是 main 函数的返回值。程序运行正确一般返回 0。
C语言代码中的空白符
空格、制表符、换行符等统称为空白符space character它们只用来占位并没有实际的内容也显示不出具体的字符。
制表符分为水平制表符和垂直制表符它们的 ASCII 编码值分别是 9 和 11。 垂直制表符在现代计算机中基本不再使用了也没法在键盘上直接输入它已经被换行符取代了。水平制表符相当于四个空格对于大部分编辑器按下 Tab 键默认就是输入一个水平制表符如果你进行了个性化设置按下 Tab 键也可能会输入四个或者两个空格。 对于编译器有的空白符会被忽略有的却不能。请看下面几种 puts 的写法
#includestdio.h
int main()
{puts(C语言);puts(中文网);puts(C语言中文网);puts(C语言中文网);puts (C语言中文网);puts ( C语言中文网 ) ;return 0;
}
运行结果 看到输出结果说明代码没有错误以上几种 puts 的用法是正确的。puts和()之间、 和()之间可以有任意的空白符它们会被编译器忽略编译器不认为它们是代码的一部分它们的存在只是在编辑器中呈现一定的格式让程序员阅读方便。 需要注意的是由 包围起来的字符串中的空白符不会被忽略它们会被原样输出到控制台上并且字符串中间不能换行否则会产生编译错误。请看下面的代码
#includestdio.h
int main()
{puts(C语 言 中文网);puts(C语言中文网);return 0;
}
第 5~6 行代码是错误的字符串必须在一行内结束不能换行。把这两行代码删除运行结果为 程序员要善于利用空白符缩进制表符和换行可以让代码结构更加清晰空格可以让代码看起来不那么拥挤。专业的程序员同样追求专业的代码格式大家在以后的学习中可以慢慢体会