C语言自学记录(C Primer Plus)

245 阅读8分钟

设计初衷:作为编程工具 选择原因:基础易上手,有助于打牢基础 应用范围:大型计算机,小型计算机,个人计算机 劣势、不是主流语言 二、程序中针对特殊硬件设备或操作系统特殊功能的部分通常不可移植 三、限制颇多 优势:一、其程序易懂,可靠,运行速度快 二、该语言具有微调控制能力,可以微调程序以获得最大运行速度或最有效使用内存,是为高效 三、C是可移植的语言,其程序可在多种系统中运行,很方便 四、功能强大而灵活 五、为C++打下基础 总结:自由越大,责任越大

CPU 职责:从内存中获取并执行指令 工作区:寄存器【每个寄存器储存一个数字。一个寄存器储存下一条指令的地址,CPU能理解的指令具体且有限。 {tips:1、储存在计算机中的所有内容都是数字。每个字符都有一个数字码。 2、程序最终必须以数字指令码表示。 3、高级编程语言以更抽象的方式描述行为,翻译工作则有编译器代劳(省事 语言标准

针对目标计算机定义最适标准,不要强求 ANSI C(C89/C90:信任程序员 不要妨碍程序员做事 保持精炼,简单 方法与操作一一对应 可以为运行速度牺牲可移植性 C99:不必添加新特性 支持国际化编程 解决明显缺陷 提高适应性 C11:不那么强调信任程序员

使用C语言 1、定义程序目标(一般术语:做什么,怎么做,程序需要做什么 2、设计程序(如何用程序完成,如何表示数据,目标用户,花多久 3、编写代码(将设计的程序翻译成代码,机制取决于编程环境,给编写的程序添加文字注释 4、编译源代码(编译器将源代码翻译成机器语言,还将源代码与库的代码合并成最终程序【大多数情况下编译器运行链接器】最后生成一个用户可运行的的可执行文件,其中包括计算机可理解的代码【编译器还能报错,所有理解编译器也很重要】 5、运行程序(常见环境输文件名,其他环境可能需要运行命令) 6、测试,调试程序(能运行最好,不能就要检查啦,也就是调试【有的错误可以被编译器捕获,有的得自己找】 7、维护,修改程序(想扩展用途 或程序有错,此时一般术语的注释就尤为重要了,先规划再动手,纸笔不离手) --------------------------C primer plus1.7--------------------------------------- 编程机制 环境:UNIX、Linux、MS-DOS、Windows、Macintosh OS 内容储存:源代码文件(source code file)(文件名以c结尾,如wordcount.c和budget.c,点号前为基本名,后为扩展名)(文件名应满足操作系统的要求)

C编程基本策略:用程序把源代码转换成可执行文件(有编译和链接两个步骤,C以分而治之的方式使得程序模块化,可以单独编译独立的模块,再以链接器合并已编译的模块) 中间文件:形式多样,但普遍是把源代码转换为机器语言代码,并把结果放入目标文件,此时目标文件中储存的是编译器翻译的源代码,尽管包含机器语言代码,也不是一个完整的程序,须以启动代码(startup code)连接程序和操作系统间的接口。目标代码还缺少库函数,此时应由链接器将目标代码,库和系统的标准启动代码连接起来。 具体系统 一、UNIX Tips:1、UNIX区分大小写 1、扩展名必须是小写c 2、编写程序并储存在xxx.c文件中时,其文本为源代码,文件为源文件(just start) 3、编译xxx.c,需输入cc xxx.c【cc命令已退出历史舞台,但UNIX提供的C编译器通常来自一些其他源,以cc命令作为编译器别名,所以用户仍可在不同系统使用相同命令】 4、若程序正确,会返回UNIX提示,告知用户已经完成(报告void错误则证明系统未更新成ANSI C编译器) 5、以Is命令列出文件,会有一个a.out文件,该文件包含已编译程序的可执行文件,如需运行只需输入a.out 6、如需储存可执行文件a.out,应将其重命名,否则下次编译时新的a.out文件将替换它 7、对于目标代码,C编译器将创建一个扩展名为.o的目标代码文件,基本名与源文件相同,此文件将于完整的可执行程序生成后被删除,若原始程序有多个源文件,则保留目标代码文件(为了省事吗?) 二、GNU(其意为GNU不是UNIX)编译器集合和LLVM项目 1、GNU编译器集合也称GCC,其中包含GCC C编译器,其C编译器紧跟C标准的改动,它有各种版本以适应不同的硬件平台和操作系统,包括UNIX,Linux和Windows。 2、用gcc命令便可调用GCC C 编译器,许多使用gcc的系统都以cc为gcc别名。 3、LLVM项目的Clang编译器处理C代码可通过clang调用,是FreeBSD的默认C编译器。 4、GNU和LLVM都可以-v选项显示版本信息,所以各系统都以cc别名代替gcc或clang命令。(cc-v) 5、不同版本选择运行来调用不同C标准 gcc-std=c99 inform.c 【3】(附录)(C99标准) gcc-std=c1x inform.c(C11之前的草案标准) gcc-std=c11 inform.c(C11标准版本) Clang编译器同上 三、Linux 1、Linux开源,流行,类似于UNIX,其中C程序几乎与UNIX中一样,不过要使用GNU提供的GCC公共域C编译器(gcc inform.c) 2、安装Linux时。可选择是否安装GCC,未安装则必须安装,安装时通常以cc为gcc别名,可用cc代替gcc 3、www.gnu.org/software/gc…

PC的命令行编译器 1、标准Windows须自行安装C编译器,下载Cygwin和MinGW可在PC端使用GCC编译器。Cygwin在自己的视窗运行可模仿Linux环境,有一行命令提示。 2、MinGW在Windows的命令模式中运行,和GCC最新版本一样,支持C99和C11最新的一些功能。 3、Borland的C++编译器5.5支持C90 4、源代码文件应是文本文件。不是字处理器文件(太冗余)所以要使用文本编辑器(Windows, Notepad)编辑源代码 5、使用字处理器。应以文本模式另存文本,其扩展名为.c,一些字处理器会自动为文件加上.txt扩展名,此时需要替换 6、通常,C编译器的中间文件扩展名是.obj(也有其他)与UNIX编译器不同,这些文件通常不会删除,有些编译器生成.asm的汇编语言文件,有些有自己的独特格式。 7、对于要求手动链接的编译器,在可执行文件中运行时会给原始源代码基本名后加上.exe(concrete.c生成concrete.exe)可在命令行输入基本名运行程序(C>concrete)

Windows集成开发环境(IDE) 1、目前大多数IDE都是C和C++结合的编译器 2、Microsoft Visual Studio Express和Pelles C可以免费下载 3、IDE内置了用于编写C程序的编辑器,都提供各种菜单,便于用户编写 4、创建项目,以便在其中添加待使用的源代码文件名,选择正确的项目形式非常重要。 5、处理C或C++需要指定【参考资料IX介绍它们的区别】 6、暂停程序(return上一行加入getchar()) 7、还需击键等待则加入两行getchar() 8、getchar()读取一次键的按下,所以按Enter键之前会暂停,第一个getchar()读取Enter键,第二个暂停程序 9、.cpp---.c C语言规则替代C++不能访问Linux文件,Linux可以运行Windows程序,也可以访问Windows文档。 Macintosh中的C 1、Xcode可处理多种编程语言,用于多平台。开发超大型项目 2、Xcode默认clang,可选择GCC,可选择C标准 3、UNIX内置Mac OS X,终端打开的窗口让用户在UNIX命令行环境中运行程序。 4、苹果软件包不提供命令行编译器,但若下载Xcode,还可下载可选的命令行工具,如此可使用clang和gcc命令。