首页 后端开发 PHP问题 不要认为做php就不需要学习c语言

不要认为做php就不需要学习c语言

Sep 04, 2019 am 11:43 AM
c语言 php

不要认为做php就不需要学习c语言

 

之所以这样说“不要认为学PHP就不需要学C语言”,是因为一味的只学PHP而没有C语言等这些基础语言的支撑,是很难深入理解PHP的很多东西的。

这样的例子其实很多,这里我就举这个例子吧:PHP的数组和C语言的数组的区别和联系。

学过C语言的朋友当然知道C语言里有数组;

PHP里也有数组,但他们两个的功能几乎差别很大,PHP的数组太多很好用的功能。那这是什么原因?是不是有多种数组,你只是学其中一种数组?其实不是的。

根本原因是:C语言里的数组是真正的数组,是在栈中申请的一段连续存储的空间,这种空间一旦申请是不能再添加一个元素,再删除某个元素,只能整体操作,要么全部删除,要么重新再申请一个数组。这就是真正的数组。

而PHP中的数组,其实不是这样的数组,它是在堆中申请内存,然后用指针去指向头地址,然后遍历指针,这样就可以删除某一个元素,随时添加一个新元素,因为它本质上不再是那种真正的数组,而是链表。

那么从这里可以看出,C语言对于PHP的理解和学习意义很大。没有C语言的链表支撑,会让PHP的那些特性出现的莫名其妙,漫天幻想也总是感觉脚不着地。

C语言中的链表原理是实现C++里的vector,list,map,等动态数组、链表、集合、队列的原理依据,也是实现PHP里面的数组(本质是链表实现的动态数组)的原理依据。

那么上层语言的那些复杂的数据结构的理解也就变得顺理成章了。对于PHP数组的那些操作也就变得很容易理解了。如:

在最后插入一个元素:

C-2.jpg

C-3.jpg

弹出一个元素:

c-4.jpg

c-5.jpg

这些东西用起来是很舒畅的,不会给你弹出一个恐怖的黑窗口错误提示,但是舒畅的背后是需要基础来支撑和理解的,牺牲编译性能是它的事,但能否理解的通就是你的事了,理解不了就只能死记硬背,那就不舒畅了,因为会很容易忘记。

如何才能不容易忘记,那就要理解它,理解它的来源,理解它可行性的实现原理....一切才会顺其自然。谁也没有规定,你要学会必须要学的很痛苦才行啊。

知其然而不知其所以然,是学有所成的最大障碍,也是出现学习瓶颈的最大因素。

所以C语言的意义在于对上层语言更轻松的理解,上层语言中如:PHP,不是用来学链表的,而是用链表的。所以用PHP来写个链表其实意义性并不大。

那只是给见识很少的初学者进行一次“学术显摆”而已。因为PHP里连指针都隐藏了,又何谈深入理解链表?也难怪学C的看不上C++的,学C++的看不上学PHP的;难度不一样,在有深厚内功的编程人员眼里,很多所谓的过来人其实是在做“哗众取宠”的事,估计是那种无所谓只要能忽悠初学者就行的感觉吧。

学习要善于联想,才能给学习减负。关注学习心情,才能长远。善于理解还是需要一定的实力、广度和深度来支撑的。

所以,不要再认为学PHP就可以不要学C语言了,否则你理解PHP很多东西都难理解的通,没有基础只能靠幻想、背诵,也难深入和长久学下去,因为太累......同时学C语言也不是说你看了、学了就算过关了,关键是要会,要懂。

比如随便给一个不懂计算机的人就能解释链表是什么?有什么特点,怎么实现等等。你能说多少,才表示你会了多少。

想了解更多相关问题请访问PHP中文网:PHP视频教程

以上是不要认为做php就不需要学习c语言的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

C语言数据结构:树和图的数据表示与操作 C语言数据结构:树和图的数据表示与操作 Apr 04, 2025 am 11:18 AM

C语言数据结构:树和图的数据表示与操作树是一个层次结构的数据结构由节点组成,每个节点包含一个数据元素和指向其子节点的指针二叉树是一种特殊类型的树,其中每个节点最多有两个子节点数据表示structTreeNode{intdata;structTreeNode*left;structTreeNode*right;};操作创建树遍历树(先序、中序、后序)搜索树插入节点删除节点图是一个集合的数据结构,其中的元素是顶点,它们通过边连接在一起边可以是带权或无权的数据表示邻

C语言文件操作难题的幕后真相 C语言文件操作难题的幕后真相 Apr 04, 2025 am 11:24 AM

文件操作难题的真相:文件打开失败:权限不足、路径错误、文件被占用。数据写入失败:缓冲区已满、文件不可写、磁盘空间不足。其他常见问题:文件遍历缓慢、文本文件编码不正确、二进制文件读取错误。

说明匹配表达式(PHP 8)及其与开关的不同。 说明匹配表达式(PHP 8)及其与开关的不同。 Apr 06, 2025 am 12:03 AM

在PHP8 中,match表达式是一种新的控制结构,用于根据表达式的值返回不同的结果。1)它类似于switch语句,但返回值而非执行语句块。2)match表达式使用严格比较(===),提升了安全性。3)它避免了switch语句中可能的break遗漏问题,增强了代码的简洁性和可读性。

什么是跨站点伪造(CSRF),您如何在PHP中实施CSRF保护? 什么是跨站点伪造(CSRF),您如何在PHP中实施CSRF保护? Apr 07, 2025 am 12:02 AM

在PHP中可以通过使用不可预测的令牌来有效防范CSRF攻击。具体方法包括:1.生成并在表单中嵌入CSRF令牌;2.在处理请求时验证令牌的有效性。

C语言多线程编程:新手指南与疑难解答 C语言多线程编程:新手指南与疑难解答 Apr 04, 2025 am 10:15 AM

C语言多线程编程指南:创建线程:使用pthread_create()函数,指定线程ID、属性和线程函数。线程同步:通过互斥锁、信号量和条件变量防止数据竞争。实战案例:使用多线程计算斐波那契数,将任务分配给多个线程并同步结果。疑难解答:解决程序崩溃、线程停止响应和性能瓶颈等问题。

您如何防止班级被扩展或方法在PHP中被覆盖? (最终关键字) 您如何防止班级被扩展或方法在PHP中被覆盖? (最终关键字) Apr 08, 2025 am 12:03 AM

在PHP中,final关键字用于防止类被继承和方法被重写。1)标记类为final时,该类不能被继承。2)标记方法为final时,该方法不能被子类重写。使用final关键字可以确保代码的稳定性和安全性。

c语言如何输出倒数 c语言如何输出倒数 Apr 04, 2025 am 08:54 AM

如何在 C 语言中输出倒数?回答:使用循环语句。步骤:1. 定义变量 n 存储要输出的倒数数字;2. 使用 while 循环持续打印 n 直到 n 小于 1;3. 在循环体内,打印出 n 的值;4. 在循环末尾,将 n 减去 1 以输出下一个更小的倒数。

See all articles