文档章节

C语言对编程学习的重要性

 宁哥实战课堂
发布于 2017/05/16 16:57
字数 1257
阅读 18
收藏 1
点赞 0
评论 0

C语言给初学者的学习感觉比较难易把控,特别是莫名其妙的指针错误,更是措手不及。引入N多的库才实现比如图形设计,甚是麻烦。所以很多人“躲过”C语言的学习,直接去学上层语言,如:PHP,js,JAVA。

但是最后会发现,事情并没有预想中的那么好,很多东西出现的莫名其妙,难以理解......比如上层语言中的字符串就是很好的例子,很多很好的用法的出现虽然给使用者带来了方便,但是为什么会那么的出现?字符串到底是怎么来的?

这些问题却更加的神秘了,因此剩下的也就是背诵,一堆的背诵,加大了学习负担,降低了学习兴趣,陷入了一个个的苦恼之中。

所以,想躲,却躲不过。因为C语言学习是走进编程领域必备的一条路。

在大学时候开设C语言,可能“动机不纯”,并没有给你解释清楚为什么要学,或者解释了你当时没感觉也没印象。

学会C语言也不是期末的时候背诵几个考试题,也不是上级测试最后一个编程题,甚至拿到满分所能衡量的。那纯粹是为了拿学分,为了应付考试,离学会还有很大的距离。

学习C语言的意义:编程行业的必备学习基础。

虽然它引入N多的库可以用来开发比较复杂的图形程序,如:俄罗斯方块,如:操作数据库的界面,但是它的意义不在于开发图形界面。因为同样的功能,可能你要开发好多天,但是别人PS或者写几个js就可以超过你的效果,如:http://www.phpkhbd.com/sky.html 或者:http://www.phpkhbd.com/full_cyy.html 这样的效果当然不是用C语言去实现的,不是不能,是不应该,否则就类似答非所问、文不对题了。

做嵌入式界面,你在不断的引入各种各样的库,错误一大片可能还没出现效果,别人QT几下子弄的比你还漂亮很多。所以C语言的学习目的不在于开发出多么炫酷的效果。而在于给你看破编程的红尘,让你懂得上层语言中突如其来的那些使用应该能怎么来。

它虽然没有汇编语言那么详细明了的给你展示内存分配过程,如:main函数怎么被调起来的,函数调用过程中内存变化详情,中断处理过程的详细变化。但是它可以给你展示上层一点的概念如:为什么要有指针,为什么指针长相那样,字符串是怎么来的,链表是什么?

怎么就出现了链表?这些就对上层语言有很好的指导意义,可以让你在学上层语言的过程中不怎么学就会了。因为它基本上就是“还原原始”的使用方式。所以你使用起来比较麻烦和枯燥,比如:

char* p="ningcaichen";

当你p[0]='N';

的时候就会出错,就比上层语言用起来麻烦多了。但这并不能说明C语言原始就没有意义,相反很有学习和指导意义,它能告诉你字符串是怎么出来的。当你晓得了之后,你就知道上面原来是在常量区定义的字符集合,而指针是不能操作常量的,因此出错,那么上层语言是怎么做到p[0]的?

其实上层语言并没有违背这个规矩,而是重新申请地址,重新拷贝那些字符内容,因此就可以解决了。但是上层语言只是给你展示结果,隐藏了这些会错误的情况,所以就莫名其妙的出现了使用方便的字符串了。因此上层语言虽然好用,但是却更加神秘了。如果不理解,你剩下的也就只能是背诵了。背多了头就大...

学习C语言也不是说必须用C语言去找工作,而是方便学某一门需求广泛的上层语言,如:PHP。所以,学习和求职很多时候是两码事,一个有长远规划的编程爱好者,是会摒弃编程语言的门户之见,做到融会贯通,就像霍元甲统一武术界,在上海创办“精武门”...

客观规律就是这样,编程行业是一个融会贯通的行业,科技不分界限,要想在上层语言中有所建树,成为精英,最后还是要回头,落下的迟早是要补回来!

继续关注:C语言的学习方法

© 著作权归作者所有

共有 人打赏支持
粉丝 5
博文 64
码字总数 74049
作品 0
长沙
其他
C语言和C++太难?没前途?谬论!

因为有些对C++并不了解,所以就简要介绍一下。很多人对C++语言都存在误解,以为C++就是C语言的扩展,包括我自己,最开始学习C++时也是这么认为的,一是因为名字太像了,然后C++面向过程部分,...

小辰GG ⋅ 2017/11/27 ⋅ 0

C语言/C++对编程学习的重要性!

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 06/02 ⋅ 0

小蚂蚁学习C语言(1)——C语言概述

C语言概述 1. 为什么学习C语言 C的起源和发展 1 第一代语言:机器语言 0101 2 第二代语言:汇编语言 add 1,2 3 第三代高级语言: C语言产生和发展过程: 产生时间:1972-1973 产生地点:美国...

嗜学如命的小蚂蚁 ⋅ 2015/11/26 ⋅ 4

“高端”的编程语言是否真的高端?

概述:某些Ruby、Python和Javascript的新手程序员常常抱怨这些语言太低端,感觉他们没有学习到那些真正“高端”的编程语言。本文将详细讨论“高端”的编程语言是否真的高端? 我看到了许多刚...

薛定谔的悖论 ⋅ 2015/03/05 ⋅ 80

程序员对C语言的拙劣看法

我对C语言的拙劣看法 扯买房实在不擅长,咱门还是来聊程序吧。 C语言是面向过程的,而C++是面向对象的C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑...

小辰GG ⋅ 2017/12/27 ⋅ 0

为什么大学学编程首先学C语言,学的什么程度可以就业,就业可以干嘛?

导读 从大学开始学习编程,学的就是C语言,未来很多人学习其他语言,但是为什么我们要先学C语言呢? 学习C语言有什么好处?自从学习了别的语言之后,就感觉C语言白学了,学了有什么用?在未来...

你的社交帐号昵 ⋅ 05/30 ⋅ 0

漫谈C语言及如何学习C语言

为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3,网络资源 附录 一些有用的C语言网络资源: 一些值得关注及研究的C语言相关项目: 一些C语言编程时可以使用的工具软件...

地狱的烈火 ⋅ 2013/06/17 ⋅ 0

用哲学的思想来学习C/C++编程

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界 ⋅ 06/02 ⋅ 0

漫谈C语言及如何学习C语言

在这里想比较系统的谈谈个人对C语言学习方法的理解。分别按照书籍、实验环境搭建、网络资源来分别介绍,希望能写的比较完整全面一些,给想学习C语言的朋友一个有价值的参考。 为什么要学习C...

wape-yang ⋅ 2013/06/16 ⋅ 1

【转】你欠自己一个老学究的身份

本文是从 You Owe it to Yourself to be Old-School 这篇文章翻译而来。 我喜欢看电视剧《豪斯医生》,我最喜欢的情节是他设法诊断一个人的病情时不是根据获悉这种罕见的病症,而是根据对身体...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对于程序员的招聘问题,作为软件人的一些吐槽和建议

作为软件人,找工作有时候似乎挺苦逼的。 说真的,让我去掉前面这句中“似乎”二字吧。就是苦逼!很多人都曾抱怨处在招聘的一方很糟糕——我们没有任何可靠的方式来甄别会写代码并且写得好的...

老道士 ⋅ 29分钟前 ⋅ 0

HDFS原理学习

一、概述 1、 Hadoop整合了众多的文件系统,首先提供了一个高层的文件系统抽象org.apache.hadoop.fs.FileSystem。然后有各个文件系统的实现类。 2、Hadoop是JAVA编写的,不同文件系统之间的交...

cjxcloud ⋅ 33分钟前 ⋅ 0

Linux下MySQL表名不区分大小写的设置方法(抄袭别人的)

Linux下MySQL表名不区分大小写的设置方法 MySQL表名不区分大小写的设置方法 在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大...

随风而浮沉 ⋅ 38分钟前 ⋅ 0

ubuntu下安装宋体simsun

sudo cp simsun.ttc /usr/share/fonts cd /usr/share/fonts sudo chmod 644 simsun.ttc 更新字体缓存: 代码: sudo mkfontscale 代码: sudo mkfontdir 代码: sudo fc-cache -fsv 安装chrome扩......

wangxuwei ⋅ 40分钟前 ⋅ 0

利用 ssh 传输文件

Linux 下一般可以用 scp 命令通过 ssh 传送文件: #把服务器上的 /home/user/a.txt 发送到本机的 /var/www/local_dir 目录下scp username@servername:/home/user/a.txt /var/www/local_dir...

大灰狼时间 ⋅ 50分钟前 ⋅ 0

web3j教程:android和java程序员如何使用web3j开发区块链以太坊

如何使用web3j为Java应用或Android App增加以太坊区块链支持,本教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤...

智能合约 ⋅ 今天 ⋅ 0

web3j开发java或android以太坊智能合约快速入门

web3j简介 web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 可以通过它进行以太坊区块链...

笔阁 ⋅ 今天 ⋅ 0

一起读书《深入浅出nodejs》-异步I/O

异步I/O “异步”这个名词其实很早就诞生了,但它大规模流行却是在Web 2.0浪潮中,它伴随着AJAX的第一个A(Asynchronous)席卷了Web。 为什么要异步I/O 关于异步I/O为何在Node里如此重要,这与...

小草先森 ⋅ 今天 ⋅ 0

JVM各种问题

1、如果启动什么都不设,会怎样? 先来看一个命令 [root@localhost bin]# java -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=29899008 -XX:MaxHeapSize=478384128 -XX:+PrintCo......

算法之名 ⋅ 今天 ⋅ 0

SAS笔记-宏2

宏是一种文本,一般来说其编译是在程序执行之前。 宏变量的创建 %let语句 %let macro_variables = text; %let是常见的宏变量建立方式,其编译就在执行前。如下例中,想要宏变量test等于数据集...

tonorth123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部