农业科技公司网站建设,wordpress js调用图片,建设部网站怎么查岗位人员,没有做等保的网站不能上线对吗引言 尽管 C 语言问世已近 30 年#xff0c;但它的魅力仍未减退。C 语言继续吸引着众多的开发者#xff0c;他们为了编写、移植或维护应用程序而必须学习新技能。 本文是为了满足对C语言初学者或想提高自身C语言修为的开发人员的需要而写的。希望对您的学习和工作有…引言 尽管 C 语言问世已近 30 年但它的魅力仍未减退。C 语言继续吸引着众多的开发者他们为了编写、移植或维护应用程序而必须学习新技能。 本文是为了满足对C语言初学者或想提高自身C语言修为的开发人员的需要而写的。希望对您的学习和工作有所帮助。您也许不赞同其中的某些方法但我们希望您会喜欢其中的一些。 本文不介绍作为一个程序员应掌握得语言细节而是与初学者分享自己的UNIX 下C语言编程学习经验也不说明一个合格的编程人员应该掌握的计算机知识比如操作系统、数据结构与算法、数据库等等。 不管您出于什么目的希望您阅读完本文后能留下您的批评或建议。您的中肯的批评会成为作者前进的动力。 工具篇 “公欲善其事必先利其器”。编程是一门实践性很强的工作在你以后的学习或工作中你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具。 (一) 操作系统 在UNIX或Linux系统中学习C很方便所以在开始您的学习旅程前请先选择一个UNIX或Linux操作系统。 目前可供个人免费使用的UNIX或Linux系统有FreeBSD、CentOS、Ubuntu、SUSE Linux等如果你以前没有接触过UNIX或Linux选择Ubuntu还是比较好因为它的软件非常丰富当然了如果你想以后一直在Linux工作学习建议选择CentOS而且在安装包中还提供很多实用的工具如gcc, make等。 如果您一直使用Windows身边又没有多余的机器安装UNIX则可以使用VMware通过VMware安装虚拟系统。 (二) 编译工具 目前绝大多数Unix或Lnux系统都提供CC或GCC编译器最简单的cc命令格式如下 cc -o hello hello.c 在unix shell环境中敲入上面的代码会将hello.c程序编译成可执行文件hello。 make 工具如 GNU make、System V make 和 Berkeley make 是用来组织应用程序编译过程的基本工具但是每个 make 工具之间又有所不同。 大部分UNIX和Linux程序都是通过运行make来编译的。make工具会读取一个包含指令的文件这个文件的名字通常都是 makefile 或 Makefile不过后文中我们统一称之为 “makefile”并执行各种操作来编译程序 (三) 调试工具 最简单的调试工具为你的程序添加打印语句 在你对程序的运行机制有了一定的了解后你可以实用一些工具帮助你进行调试当然你得学习一下这些工具得使用如dbxgdb等。 还有一些内存工具可以帮你查找内存泄漏或缓冲区溢出等一些问题如memwatch,yamd等 (四) 其他工具 1vi或vim(vim是vi的升级版) Unix下文本编辑器。主要靠一堆命令来编辑文本文件学Unix编程最好熟悉并熟练使用vi编辑器。 当然在实际工作中你可能需要一个集成编码环境或一个功能强大的图形化编辑工具。 提供一个中文的vim在线手册http://www.slideshare.net/kinghom/vim-1922665 2.netterm 最著名的网络终端软件之一可以使用它方便的连接到主机系统中。 3Secure shell 一个支持ssh协议得客户端工具多数情况下用来连接linux系统。 书籍篇 “书是人类进步得阶梯”。学习一门新的知识当然要选择几本适合自己得书籍下面介绍一些我自己学习C语言使用过的书籍 1《C primer plus》 推荐理由适合作为入门书和基本函数查询得参考资料。本书最新版为第五版以ANSI C99为标准详细介绍了C语言。 2《The C programming_Language》 推荐理由C语言之父得作品权威性毋庸置疑。虽然书籍出版时间比较老好像也没更新不过仍不失为经典书籍网上有这本书得英文电子版提供下载。 3《C 专家编程》 推荐理由本书可以帮助有一定经验的C程序员成为C编程方面的专家最关键的是本书寓教于乐让你充分享受编程的乐趣。 4《C缺陷与陷阱》 推荐理由书中所揭示的知识能帮助您绕过C语言自身得陷阱和缺陷减少代码中许多常见的Bug。 5《unix环境高级编程》 推荐理由既然是UNIX环境下C编程就不得不说说UNIX编程书籍。Stevens先生的《unix环境高级编程》是我竭力推荐的也是我的案头必备如果对网络编程有兴趣的可以学习一下Stevens先生的《UNIX网络编程》两卷如果觉得还不过瘾可以再看看《TCP/IP详解》三卷。 6《计算机编程艺术》 推荐理由算法大师得呕心沥血之作。计划出版五卷书目前好像已出版3卷。对算法有兴趣得可以研究一下。 过程篇 1. 学习C语法 语法的学习对于一个具有编程底子的来说就很轻松了即使你以前没有学习过其他编程语言我相信有2个星期你也能轻松搞定。 需要注意的是不要太纠缠于语言的细节比如运算符优先级与结合性的问题等。 2. 学习C标准库 ANSI C库把函数分为不同的组每个组都具有与之相关的头文件。C语言标准库相对于其他语言比如CJava来说是非常短小精悍的但首先应着重对以下库进行学习 ctype.h字符处理 math.h数学库 stdio.h标准I/O库 stdlib.h通用工具库 string.h字符串处理 time.h时间和日期 如果想了解完成的ANSI C库你可以购买相关的书籍这些书籍一般会详细介绍每个函数的用户和一些注意点。 3.攻克C的难点 C语言声明 C语言的声明确实让我觉得恐怖比较晦涩难懂而且声明的形式和使用的形式还类似。比如如下的声明恐怕就连很多熟悉C多年的程序员也不是一眼就能看出来的 char * const * (*next)(); 那么有没有一种好的记忆方法或规则来搞清楚呢好像没有如果有的话也不是这样折磨人了。不过可以看看《C专家编程》第三章的内容或许你会有所收获。也只能多学多练了所谓熟能生巧嘛希望这个问题不要在你的心灵上留下阴影。 数组与指针 数组与指针的关系在标准中并没有作很详细的规定而且好多C入门的书籍在这个问题上并没有给出很详细的说明所以会给人造成很多误解。 对于这个问题你可以参考《C缺陷与陷阱》4.5节和《C专家编程》第4,9,10章,相信你这里面的内容搞透彻以后就不会再被这个问题搞迷惑。 指针与内存 如果你以后编写规模较大的程序你可能发现这个问题可能会是你最大的烦恼而且可能会是你消耗最多调试时间的事项。 C版本的问题 你得特别小心该问题最好不要在你的程序中混合使用不同版本C的特性否则会给你带来很迷惑的问题。如果一定要用你最好清楚自己在做什么。 还有一些其他C中的难点和容易错误的地方可以学习前人的一些经验。以下是一个c FAQ的链接地址相信在这篇文档中有你需要的大部分问题的解决方法。 http://c-faq-chn.sourceforge.net/ 4.UNIX环境编程 学习了以上内容之后我相信你就可以进行unix环境编程了。不过你可能需要对操作系统理论有一点点的了解这样学起来会比较轻松一些。 Unix环境编程你应该着重IO和进程两大块内容。《Unix环境高级编程》中对Unix环境编程有着非常详细且深入的论述而且书中有大量实用性例子程序不过可能得花上几个月得时间好好啃一啃了。 在扎实掌握以上内容不代表你得C语言学习支路已经完成相反才刚刚开始。以后你需要用学到得知识去解决大量不同实际问题在不断得实践过程中你会近一步加深对C的理解。有了以上基础之后你会发现在实践过程中需要的其他知识你会非常快速的掌握。 方法篇 编程是一个实践性很强的工作最好的学习方法就是边看书边调试代码把书上的例子程序反复的修改调试运行从中得到自己的体会。 在自己的学习或工作中写的一些测试的程序要分门别类的保存下来在以后的实际工作中不断的整理日积月累就是一个很好资源库了。 有时候可能会觉得书上的例子作为理解概念时比较通俗易懂但实用价值不高。所以要提高自己的编程能力你还需要学习别人的代码我认为研究别人的代码是提高自己实际编程能力最好且最快的途径现在网络上有很多价值很高的开源代码可供你选择学习。 最后不得不提到的一个问题就是千万不要让自己淹没在各种技术细节的海洋中比如前缀运算符问题表达式计算优先级问题等。 学习UNIX下C编程也好还是其他编程语言我们最后的目标都是为了使用计算机解决现实中的问题所以积累日常工作中常见问题的解决方法并形成一定的范式做一些提炼才是最重要的。说到底设计和编程所做的事情就是方法论不管你是无意识还是有意识的所以一定要注重积累。 补充说明 1. 对于有人问是否需要一份ANSI C99标准对于一般开发人员并没有必要且不说其语言晦涩难懂即使你能从头到尾学习一遍我想对你的编程也没有什么提高。 2.目前多数UNIX操作系统所带的cc、gcc等编译器好像并不支持C99的所有新特性不过现在已经有足够多的新特性普遍可用因此有理由开始认真考虑在新的开发中采用C99特性尤其是用在它们使得效率或清晰度本质上发生变化的那些地方比如以内联函数代替宏替换。 3.编程规范的问题一般较为正规的软件公司都会有自己的一套完成的编程规范那么你遵守就好如果你是自己学习的话可以选择一个较为通用的规范最好的方法就是看别人是怎么写代码的。