c语言入门编程求助!!!

很好的介绍Linux下c语言入门的编程书籍特别适合原来没有基础的读者!
Linux操作系统c语言入门编程入门 目录 第一章基础知识 第二章进程介绍 0 第三章文件操作 ·“ 第四章时间概念 27 苐五章信号处理 31 第六章消息管理 39 第七章线程操作 439 第八章网络编程 54 第九章 Linux下C开发工具介绍 87 [3∞104] Linux操作系统c语言入门编程入门 第一章基础知识 前言 夲 章介绍在LINUⅹ下进行c语言入门编程所需要的基础知识在这篇文章当中我们将会 学到以下内容: 源程序编译 Makefile的编写 程序库的链接 程序的调试 ■頭文件和系统求助 of104 Linux操作系统c语言入门编程入门 源程序的编译 在 inux下面如果要编译一个c语言入门源程序我们要使用GNU的gcc编译器。下面 结果了命令荇中gcc表小我们是用gc来编译我们的源程序,o选项表小我们要求编详器 给我们输出的可执行文什名为helo而 hello.c是我们的派程序文件 scc编译器有许多选顷,敫來说我们只要知道其中的几个就够了O选项我们已经知道 了,表示我们要求输出的可执行文件名。-c选项表示我们只要求编译器输出目标代码,洏不必 要输岀可执行文件⑧选项表示我们要求编译器在编译的时候提供我们以后对程序进行调 试的信息。 知道了这三个选项,我们就可以編译我们自己所写的简单的源程序了,如果你想要知道更 多的选项,可以查看grc的帮助文档,那里有着许多对其它选项的详细说明 2 Makefile的编写 设我们囿下面这样的一个程序源代码如下 / mainc+/ include "mytooll h SHELL脚本让她帮我去完成不就可以了是的对 于这个程序米说,是可以起到作用的,但是当我们把事情想的更复杂┅点,如果我们的程序有 儿百个源程序的时候难道也要编译器重新一个一个的去编译? 为此,聪明的稈序员们想出了一个很好的工具来做这件事凊,这就是makc我们只要执行 以下make,就可以把上面的问题解决掉.在我们执行make之前,我们要先编写个非常重要的 文件,- 出现这个错误是因为编译器找不到log嘚具体实现虽然我们包括了止确的头文件但是 我们在编译的时候还是要连接确定的库在 Linux下,为了使用数学函数我们必须和数学库连 接,为此我們要加入-m选项. gcc-o temp temp.c-m这样才能够正确的编译也许有人要问, 前面我们用 printf函数的时候怎么没有连接库呢?是这样的对于一些常用的函数的实现gcc 编译器会洎动去连接一些常用库,这样我们就没有必要自己去指定了.有时候我们在编译程 序的时候还要指定库的路径这个时侯我们要用到编译器的L选項指定路径.比如说我们有 个厍在/home/hot/mlib下,这样我们编译的时候还要加上L/home/hoyt/myib,对于一些 标准库来说,我们没有必要指出路径只要它们在起缺省库的路径下僦可以了.系统的缺省库 的路径/ib/usr/lb/usr/locl/ib在这三个路径下面的库我们可以不指定路径 还有一个问题,有时候我们使用了某个函数,但是我们不知道库的名芓,这个时候怎么办 呢?很抱歉,对于这个问题我也不知道答案我只有一个傻办法首先我到标准库路径下面去找 看看有没有和我用的函数相关的庫我就这样找到了线程 thread数的库文件 (libpthread2 选项就可以了(去掉前面的l和后面的版本标志,就剩下m了所以是lm).如果你知道怎么 找请赶快告诉我我回非常感噭的.谢谢 4程序的调试 我 们编写的程序不太可能一次性就会成功的,在我们的程序当中会出现诈许多多我 们想不到的错误,这个时候我们就要对峩们的程序进行调试了 最常用的调试软件是gh如果你想在图形界面下调试程序那么你现在可以选择xgh记 得要在编译的时候加入g选项关于gdb的使用鈳以看gsdb的帮助文件由于我没有用过这 个软件所以我也不能够说出如何使用.不过我不喜欢用gdb跟踪一个程序是很烦的事情 ,我一般用在程序当中輸岀中间变量的值米调试程序的.当然你可以选择自己的办法,没有 必要去学别人的现在有了许多IDE环境,里面已经自己带了调试器了你可以选择幾个试 试找出自己喜欢的一个用 5头文件和系统求助 [8∞104] Linux操作系统c语言入门编程入门 有 时候我们只知道一个函数的大概形式,不记得确切的表达式,或者是不记得着函数 在那个头文件进行了说明这个吋侯我们可以求助系统 比如说我们想知道 fread这个函数的确切形式我们只要执行 man fread系统就会輸出着 区数的详细解释的和这个函数所在的头文件< stdio. h>;说明了.如果我们要wrte这个函 数的说明,当我们执行 man write时,输出的结果却不是我们所需要的.因为我們要的是w ritc这个函数的说明,可是出来的却是 write这个命令的说明为了得到wrtc的函数说明 我们要用man2wite.2表示我们用的 write这个函数是系统调用函数还有个我们瑺 用的是3表小函数是C的库函数 记住不管什么时候man都是我们的最好助于 好了,这一章就讲这么多了,有了这些知识我们就可以进入激动人心的 Linux下嘚C程序 探险活动。 of104 Linux操作系统c语言入门编程入门 第二章进程介绍 前言 这 篇文章是用米介绍在 Linux下和进程相关的各个概念我们将会学到: 进程的概念 进程的身份 ■进程的创建 守护进程的创建 [10r104]

对于大部分初学者学习c语言入門的目的是希望做一名合格的程序员,开发出靠谱的软件来但是学了c语言入门的基本语法后,发现只能开发“黑底白字”的DOS程序完全沒有漂亮的界面和生动的交互。于是学数据结构学算法,学操作系统越陷越深,越来越难最后迷茫了,不知道学c语言入门能做什么认为学习编程很难,开始怀疑自己甚至想放弃。

其实这是很多初学者都会踩到的一个坑!c语言入门本身是一门很简单的语言,提供嘚实用功能不多大部分要借助操作系统、第三方库、单片机来完成。也就是说只学c语言入门基本什么也做不了,也基本找不到工作

c語言入门是一门通用性的语言,并没有针对某个领域进行优化在实际项目中,c语言入门主要用于较底层的开发例如:
开发硬件驱动,讓硬件和操作系统连接起来这样用户才能使用硬件、程序员才能控制硬件;
单片机和嵌入式属于软硬件的结合,有很多使用c语言入门的哋方;
开发系统组件或服务用于支撑上层应用;
编写PHP扩展,增强PHP的功能;
如果对软件某个模块(例如算法和搜索部分)的效率要求较高也可以使用c语言入门来开发。

既然c语言入门的应用这么多为什么很多读者觉得它什么也做不了呢?

我们先说一个概念就是库(Library)。庫就是编程专家写好的代码我们可以拿来直接使用,这样能够节省开发成本提高开发效率,并且库代码的执行效率、严谨性、安全性囷规范性要明显优于我们自己编写的代码市场上有很多优秀的库,有的收费有的免费,我们要善于利用这些库尽量不要重复造轮子。

编程语言的开发者在开发编程语言的时候一般都要预先写好常用的代码,或者说常用的功能例如输入输出、数学计算、文件操作、網络操作、日期时间、错误处理、字符串处理等,这些由官方编写的库称为标准库(Standard Library)它们随编程语言一起发布,可以认识是编程语言嘚一部分
有一些组织机构或者个人也会开发一些库,有的是为了盈利有的是业余爱好,有的是本公司正在使用的代码开源出来造福囚类,这些库称为第三方库(Third-party Library)

第三方库不是由官方开发,没有质量把控良莠不齐,但是有相当一部分也非常优秀已经得到了大家嘚认可,已经应用在大公司的项目开发中这些库能够和标准库媲美。

标准库是我们在学习编程语言时就要一起学习的例如c语言入门的輸入输出、文件操作、日期时间、字符串处理、内存管理等都是标准库提供的功能,它们并不是c语言入门语法的内容

如果一门编程语言嘚标准库强大,初学者经过简单的学习后就很容易开发出实用的项目例如Java,它的标准库包含了GUI(图形界面)、图形处理、网络通信、网絡服务器、HTML解析、HTTP协议、多线程、多进程、正则表达式、压缩文件、加密解密、数据校验、音频视频处理、数据库操作、XML操作等常用功能初学者学了以后立马就能够开发网站、开发PC软件,感觉很实用也感觉学到了东西。Python、C#、VB、PHP、JavaScript、Ruby 等都是非常实用的语言学了就能做出東西来。

反观c语言入门它的标准库只有输入输出、文件操作、日期时间、数学计算等基本功能,都是在黑黑的控制台下进行的跟网站、PC软件、APP等八竿子打不着,所以初学者觉得c语言入门没有用

那么,c语言入门到底能不能开发网站、PC软件或者APP呢

c语言入门的标准库肯定鈈能干这些事情啦,就得依靠第三方库了遗憾的是,c语言入门的第三方库大都也是底层库支持应用开发的库寥寥无几,只有一个 GTK 库能夠开发出 PC 软件来而没有与网站开发和APP开发相关的库。

GTK 库在PC软件开发中也很少用了PC软件开发已经是 C++、C#、VB、Java、Delphi 的天下了。换句话说开发PC軟件基本不使用c语言入门,而是使用 C++、C#、VB、Java、Delphi 等其它语言

记住,c语言入门几乎不用来做软件、网站、APP等这些应用层开发其它的编程语訁能够更好地完成任务,没必要非得使用c语言入门c语言入门基本都是用来做底层开发,也就是看不见摸不着的、在后台默默提供服务的那些项目而这样的项目对初学者来说基本没有实用价值,初学者也不知道它们该怎么使用

初学者想要的c语言入门没有,c语言入门能做嘚初学者用不到就是这种矛盾导致初学者非常迷茫。

有人可能会问c语言入门不是还可以用来开发单片机或者嵌入式吗?是的没错但昰这个方向是软硬件结合的,不是在我们的电脑上进行开发而是在特殊的开发板上进行开发,并且还需要学习数字电路、模拟电路、汇編、ARM、Linux 等方面的知识只学c语言入门也没有用武之地。

如果你觉得学了c语言入门没用那么恭喜你,你是对的应用层的开发一般真的用鈈上它。

但是没用也要学,学习c语言入门并不一定是要应用它c语言入门可以夯实你的编程基础,尤其是数据结构、算法、内存、线程、进程、通信、操作系统等底层的计算机知识没有c语言入门基础是学不好的。

这些底层知识并不一定能够直接应用在实际开发中但是咜们会让你有底气,会让你透彻地理解编程概念会让你站的“低”看得远,会让你避免很多低级错误会让你心中有“架构师”的思维。不学c语言入门是码农学了c语言入门是程序员。
初学者必须c语言入门开始吗
建议从c语言入门开始,然后学习数据结构、算法、内存、線程、进程、通信、操作系统等基本的概念它们是学习编程的基础,不管是应用层开发还是底层开发这些知识都是必须的。

如果你非偠跳过c语言入门从其他语言开始,比如 Java、Python、PHP、JavaScript、C# 等也不是不可以;但是,在学习的过程中你会有一种雾里看花、空中楼阁的感觉很哆东西只会用,却理解不了深入不了,原因就是没有计算机基础没学会走就想跑了,这个时候还得老老实实回来学习c语言入门。
关於数据结构、算法、内存、线程、进程、通信、操作系统等这些基本的知识重要的是理解概念,知道计算机是怎么回事千万不要深入細节,把自己绕进去耽误一两年的功夫,要尽早跳出来去做应用开发找到兴趣点,获得成就感

这个时候,c语言入门主要的作用是让伱入门了解编程语言的基本语法,强化编程思维学习计算机底层知识,为以后的职业生涯打下坚实的基础而不是用它来做实际开发。

在实际开发中遇到问题,或者哪里理解不透了可以再来回顾这些底层知识,这个时候就可以深入细节了因为有了实际开发经验,洅学习底层知识就知道哪里是重点了不会像无头的苍蝇一样乱飞,什么都学
【拓展】c语言入门为什么没有应用层开发的库
c语言入门是┅门“古老”的语言了,它只支持面向过程编程不支持面向对象编程和泛型编程,在中大型的应用层项目开发中c语言入门已经显得捉襟见肘了,C++、Java、Python、C# 等其他编程语言能够更好地胜任为c语言入门开发应用层的库简直是费力不讨好,所以几乎没人这么做

GTK 算是一个应用層的库,但是它也比较老了新版的 GTK+ 已经支持 C++ 了,不再仅仅支持c语言入门了

我们先不管面向过程、面向对象、泛型这些晦涩的编程概念,简单地理解就是c语言入门支持的特性少,用起来费劲开发效率低,而 C++、Java、Python、C# 等支持的特性多用起来方便,开发效率高

c语言入门嘚优势是运行效率极高,这正是底层开发所看重的底层开发有时候就是一个模块,或者是一个服务规模不算大,但是对效率有严格的偠求此时用c语言入门就非常合适,所以针对底层开发的c语言入门库较多因为它们有非常大的实用价值。

我要回帖

更多关于 怎么编程 的文章

 

随机推荐