在 Linux 下学习 C 语言有什么好处?

求职招聘网 2023-08-16 17:55 编辑:admin 268阅读

一、在 Linux 下学习 C 语言有什么好处?

我们一点点来。

首先回答你那个使用编译器的对比,Linux下的正确用法应该是这样的(当然,只是其中之一的“正确用法”):

>mkdir hello

>cd hello

>screen

>vi hello.c

#完成程序

#不退出vi,继续:e Makefile,完成Makefile的编写

#(继续不退出vi,下同):make 编译程序,并完成代码修改

# :e .gdbinit,编写gdb脚本,比如加上file hello, break the_hellp_function; run等命令

#^A c创建新的窗口

#运行,调试程序,并通过^A ^A切换窗口

这个效率肯定比你在Windows下大部分工具都高,这就是Unix的思想(之一)——所有重复的动作,全部用脚本解决。你不会的时候当然GUI效率高,你会的时候,当然是脚本效率高,因为所有重复的动作都会变成一个动作。

好了,我们进一步深入进去。现在我问个问题,你的hello world程序调用了一个printf,这个printf是哪里定义的?如何实现的?你既然学习C语言,总得知道它是怎么工作起来的吧?在Windows的GUI程序封装下,你怎么知道你的程序是怎么编译出来的呢?

在Ubuntu下,你可以这样:

> gcc -v hello.c -o hello

这样你完整地知道整个编译,汇编,链接过程是怎么样的,你甚至可以要求留下中间的任何一个结果,以供分析。

或者你可以简单做这个动作来看printf是哪里定义的:

>LD_DEBUG=bindings ./hello

你会发现printf调的是puts,在比如/lib/x86_64-linux-gnu/libc.so.6中定义的。知道这个文件是哪个,你可以可以查找它所在的包:

>dpkg -S /lib/x86_64-linux-gnu/libc.so.6

知道是哪个包,你可以直接下载它的源代码:

>apt-get source libc6

然后你就可以开始修改这个代码,重新编译它,调试或者运行整个程序了...

看到了吗?使用Linux,你手中的整个操作系统,包括支持你运行C语言的一切工具的源代码,都是对你公开的。你问为什么学习C语言要用Linux?这就是原因,你将有一个完全敞开的语言世界。

最后,如果你学的是C语言,C语言在Windows下早就式弱了,只有在Linux中才生生不息,这里有最浓厚的C语言文化,autotool等原生工具会告诉你C语言的跨平台历史和恩怨,而这些历史,在Windows上已经泯灭了。

这怎么说呢?C语言的libc的原始接口,在Windows下大部分都不再使用了,你不再用malloc来分配内存,你会更多使用HeapAlloc一类的接口(当然,不是说malloc不能用。但那更多是为了兼容,而不是开始就这样设计的,下同),你也不用pthread_create来创建线程了,你用CreateThread(),实际上,大部分Windows的用户程序微软并不建议你用C来写,所以你在Windows下学习C,也没有什么太多实际的价值,因为本来就不预期你这样用。而Linux下是不同的,Linux很多基本程序就是指望你用C来写的。

所以,题主问“学C语言最好的平台”,我想,真的是Linux无疑了,这不是基于情怀,这是基于成本和收益的。

当然,如果题主其实是为了找工作,根本不在乎学的是不是C,这就在我的回答之外了。

二、Linux编写c语言步骤?

Linux本身是用C和C++语言编写的,因此在Linux环境下学习C语言是非常有利于提高C语言编程能力的。

在Linux环境下,首先需要打开vim编辑器,在里面编写C语言程序,输入完成后,点击wq保存并退出。

再使用gcc命令完成代码编译,如果没有错误,那就可以在终端输入程序名执行该C语言程序了。

三、学习linux,要什么基础?要懂C语言吗,还是C和C加加?

1、一定的英文基础是必要的,需要了解C语言和C++。针对学习shell编程,及熟知各种Linux系统命令使用即可。如果有python或perl基础则更容易上手。

2、看书时要多做习题,一题一题的弄明白,要不书也白看。从一开始养成良好的编程习惯,怎么算好的你看书上的代码怎么写的。

3、关于数学,初中数学水平可以编程,小学甚至学前班也没什么不可以。另一方面数学博士编程的时候也不会嫌自己数学学的太多了。需要多少数学这跟你要做的东西很有关系,也影响到你学习的深入程度,工作中就影响你的代码质量。总的来说数学水平是越高越好,但并没有一个门槛,什么水平都可以学,就是质量差一些。

4、学习Linux内核开发。Linux的内核是由绝大部分的C语言和少部分汇编语言组成的。要学习Linux内核开发,必须要懂C语言,同时对操作系统原理需要有一定了解。

5、学习Linux平台上的软件开发。这部分包含很广,有各种各样的要,需要根据项目性质确定基础需求。

四、如何学习C语言?

1、课前预习,课后复习,认真做课堂、课后的作业,理解理论知识。

2、记住语法规则。

3、加强逻辑思维。

4、多动手,通过练习上机了解它的运行过程。

5、实践—>理论—>再实践,刚开始学习C语言时,按示例练习,并推动理论的学习,然后再自己多思考,多上机实践。

五、linux怎么查看c语言脚本?

可以用vi,vim,less等命令查看脚本

六、linux怎么运行c语言代码?

在linux下运行C语言代码是比较简单的事情。C语言代码不能直接运行的,你首先必须编译链接,之后生成一个可执行的文件,再运行这个文件。

要编译C语言的代码,在命令行输入编译指令链接,你要用到的库文件或者一些参数,这样运行完之后就自动生成可执行文件了。

七、什么是C语言和linux?

linux的是一操作系统,其本质是一系列的任务调度,内存管理,虚拟文件系统等算法的集合.它告诉你的计算机怎么充分利用你机器上的资源.linux内核的源代码是用C语言写的(源代码也见于pub.kernel.org).C语言是一门编程语言,其本质是把一些C语言关键词描述的算法转换为计算机可以直接运行的二进制机器语言的整体.想把C语言写成的代码编译成二进制机器语言要使用C编译器(Ccompiler),C编译器是一个软件,它可以把C语言写成的代码转换成机器可以执行的二进制文件.世界上有多款这样的软件,如gcc.linux内核及linux环境下可用的所有软件都是用gcc编译的.简而言之,linux是一个操作系统,是一个各种应用程序工作的环境.linux的内核,即这个操作系统的核心代码,是用c语言编写,并用gcc编译的.linux内核是一套描述系统工作方式的算法,C语言是其实现途径.C语言也可以用来编译其它的代码.

八、linux语言和c语言比哪个难度大?

学会linux比学会C语言要容易很多。

但是必须指出的是linux是操作系统,而c语言是编程语言。他们两个是不一样的东西。C语言可以在linux下面使用,各个版本的linux都支持C语言,并且都自带了C语言的编译程序。只需要学会简单的linux操作,就可以使用C语言编程了。相对来说,学会linux比学C语言要简单很多。

九、如何快速学习c语言?

最快的方法自然是报个培训班,不过的确是挺贵的。如果要自学的话,买几本比较不错的书,像谭浩强的c程序设计之类的。另外要充分利用网上的资源,去网易云课堂,中国大学mooc,b站上面看一些视频(最好找一整套的,从头跟着学到底),边看视频便跟着视频敲代码。有很多像老九,小甲鱼(可能有点老)的视频还是不错的。

十、c语言书籍学习顺序?

1、程语语言其实是一个很初级的工具,但是又必须熟练的掌握它,学懂一门编程语言就好像学会了写字,但是会写字的人不见得会写文章,而会写文章又不见的写得好。可是如果不会写字,那就一定写不出文章来。

2、在学习C语言之前,应该学好计算机基础。里面的很多概念对于C程序员都是非常重要的。如果在着手学习C之前,或者已经开始学习C,但是碰到了很多问题,应该再把计算机基础的书拿来好好看看。如果有足够的耐心,十足的毅力,应该再学习C语言之前学学汇编,这会对许多比较细腻的概念有清醒的认识。那么可以在看完一遍C语言的教材后再看,但是一定要看一遍,一定会受益匪浅。不管看什么书,先认真地看懂,不要贪速度,应该力求深入的理解。如果能够比较熟练的解决一本教材上的所有习题,那么就应该转入对算法的学习,尽管此时的C语言还称不上精通,有许多细节问题还不了解,许多问题还没有碰到,但是这些问题会在后面的工作和学习中得到解决的。

3、不需要多少资料,掌握一本《The C Programming Language》就足够了。继续学习就更加容易。建议不要找捷径,通过考试除外,真正的水平提高是建立在编程实践积累基础上的,必须一个一个程序的完成才能提高。