关于C编程的一点感受

刚毕业的时候用了两个多月的C语言编程,总的来说对它还是很有感受的,C是一个过程式语言,没有像C++,Java等OOP语言这样那样的一系列的规则和限制;它比较灵活,简洁,高效;这些是给我的印象最深的。这是很久以前写的东西了,现在贴出来,希望对正在学习C语言的人有所帮助。

关于C编程的一些感受。

a.现在写程序的人很多,但大部分都是用的高级语言,其实一个优秀的程序员,一个优秀的软件工程师,都应该从底层做起,例如从汇编,从Dos;就像我的一个领导说的那样,计算机像一个海洋,而硬件就是海底,汇编和Dos是海床,是它们支撑了这个庞大的海洋;而高级语言则如同海里的船,等我们有了基础再去造各种各样的船那就很简单了。

b. 由于我们写的程序不能只有自己一个人来读,因此写代码期间移一定要有加详细注释的习惯,这样既可以增强程序的可读性,方便与别人交流合作;也会为自己调试程序带来方便。加注释要尽量用英文,因为有的编译器可能不支持汉字,例如Turboc,BorlandC++。

c . 指针是C语言的核心,因此在使用它时一定要格外小心,使用它时要尽量这样定义char p[],而不用这种形式 char * p; 后一种定义有时会给你带来意想不到的麻烦和错误。

d. 对于我们这些刚入门的人来说,写程序一定要养成良好的风格:例如函数定义,变量声明要让人们很容易能联想到它的作用,大括号上下要严格对齐,语句和它的子集语句要有明显的间隔,通常以一个Tab键的距离为准;等等这些吧。

e. 如果有能力的话,自己定义函数,而不是每次都被动的去使用编译器提供的库函数,因为我觉得使用自己定义的函数更放心。C++里面就不是这样了,在C++里面则要求尽量使用它自己的类库,而不是自己重新定义。

f. 你的东西做出来以后,一定要请多个人去调试,因为人们往往受定性思维的限制,这使得有些潜在的异常你很难发现,但别人也许会轻而易举的找到它,从而能帮你尽快完善你的程序。

g. 写程序一定要注意它的可扩充性和通用性,例如同样的一个绘制编辑框函数,有的可以绘制很多种不同大小的框,而有的则只能画固定长宽的框,这就是区别;所以不论写什么函数都要考虑它的通用性,定义好入口参数。

//附加:如果想以后转向C++或java编程的话,建议C语言不要学的太精,因为有这样一句话“C语言学的越精,就越不容易发挥C++语言的优势”。^_^!

回复:
写的还可以,和我的想法差不多。不过有些观点我不敢拘同:

1、指针很简单,就是一个地址而已,懂汇编都知道,那是一种内存寻址方式。char[] szText 和 char* pText,我更喜欢后者,因为它更灵活。[]只是一个数组而已,数组是一经分配就不能再赋值的,而*才是指针。它可以用malloc和free创建动态的内存分配。

2、这一句:“加注释要尽量用英文,因为有的编译器可能不支持汉字,例如Turboc,BorlandC++。”。我也提倡加释时尽量用英文,但你似乎可能打错字了吧?编译器是不会解释注释的,只有在源码编辑器环境中,才有这一说法。所以你应该说“……因为有的编辑器……”


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何打造高效的多任务、高并发的网络服务器系统?

同一个功能的软件,不同的团队,不同工程师去实现,肯定是千差万别,甚至从根本上完全不同。所以软件开发在未来很长时间内仍然是一项工匠的手工劳动,尤其像多任务,高并发,偏底层这种对实现技巧比较…

BZOJ.2780.[SPOJ8093]Sevenk Love Oimaster(广义后缀自动机)

题目链接 \(Description\) 给定n个模式串,多次询问一个串在多少个模式串中出现过。(字符集为26个小写字母) \(Solution\) 对每个询问串进行匹配最终会达到一个节点,我们需要得到这个节点所代表的子串出现在多少个模式串中。 建立广义后缀自动机。每次插入…

BigDecimal 加减乘除运算

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDeci…

主码 超码 候选码

码是数据系统中的基本概念。所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。   超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一…

学成在线--18.新增课程(课程分类查询)

文章目录一.需求分析二.课程分类查询介绍三.数据结构四.数据格式五.数据模型六.Api接口七.服务器端1.Dao1)定义mapper2)定义mapper映射文件2.Service3.Controller八.接口测试一.需求分析 用户操作流程如下: 1、用户进入“我的课程”页面&…

给程序员们的工资报价提醒

在薪水上讨价还价的方式有很多种,我要说的这一点也许并不是最好的。然而,如果使用的得当,会收到很好的效果。如果你正在跟一家公司接触(没有经过职业中介),而且事情看来很顺利,进度很快,你要保持这种面试的…

POI 方式-excle 表格导出实现-java-poi

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 效果&#xff1a; jsp 页面 用的Bootstrap &#xff1a; <li class"dropdown"> <a href"javascript:void(0)…

02-css的选择器

css的选择器&#xff1a;1.基本选择器 2.高级选择器 基本选择器包含&#xff1a; 1.标签选择器标签选择器可以选中所有的标签元素&#xff0c;比如div&#xff0c;ul&#xff0c;li &#xff0c;p等等&#xff0c;不管标签藏的多深&#xff0c;都能选中&#xff0c;选中的是所有…

iphoneX样式兼容

// 1.viewport meta 标签增加属性viewport-fitcover // 2.body元素增加样式 body { padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } // 3.如有fixed底部的元素&#xff0c;也增加上面样式 xxx { padding-bottom: constant…

学成在线--19.新增课程(数据字典)

文章目录一.介绍二.数据模型三.数据模型类四.字典查询API接口五.服务器端1.Dao2.Service3.Controller一.介绍 在新增课程界面需要选择课程等级、课程状态等&#xff0c;这些信息统一采用数据字典管理的方式。 本项目对一些业务的分类配置信息&#xff0c;比如&#xff1a;课程…

范式简介

范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。范式的种类&#xff1a; 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF) 一个低一级范式的关系模式&#xff0c;通过模…

程序员的进化

对于很多同学来说&#xff0c;他们对程序员的职业生涯非常关注。而这本质上是一个进化的过程。我们将如何进化&#xff1f;在每个进化阶段我们应该如何提高自己&#xff1f;下面的文章根据我自己的切身经历和阅读过的书&#xff0c;为程序员每个阶段的进化提供了不同的学习思路…

【树形dp】vijos1144小胖守皇宫

细节很精妙 描述 huyichen世子事件后&#xff0c;xuzhenyi成了皇上特聘的御前一品侍卫。 皇宫以午门为起点&#xff0c;直到后宫嫔妃们的寝宫&#xff0c;呈一棵树的形状&#xff1b;某些宫殿间可以互相望见。大内保卫森严&#xff0c;三步一岗&#xff0c;五步一哨&#xff0c…

手机号码归属地及运营商查询

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class NewMobile {public stati…

redhat6.5手动配置网络

2、手动设置ip地址如果虚拟机不能自动获取IP&#xff0c;只能手动配置&#xff0c;配置方法如下&#xff1a;输入命令#vi /etc/sysconfig/network-scripts/ifcfg-eth0 [编辑网卡的配置文件]输入上述命令后回车&#xff0c;打开配置文件&#xff0c;使用方向键移动光标到最后一行…

学成在线--20.新增课程(最后完善)

文章目录一.效果展示二.服务端1.Api接口2.Dao3.Service4.Controller三.前端1.页面完善1&#xff09;创建course_add.vue页面2&#xff09;course_add.vue页面路由3&#xff09;course_list.vue中添加链接2.查询数据字典1&#xff09;视图中代码2&#xff09;定义Api方法3&#…

http协议工作流程

用户单机鼠标后所发生的事件过程如下&#xff1a; &#xff08;1&#xff09;浏览器分析链接所指向页面的URL。 &#xff08;2&#xff09;浏览器向DNS服务器请求解析URL的IP地址。 &#xff08;3&#xff09;域名系统DNS解析出URL对应的IP地址。 &#xff08;4&#xff09…

html里面表格问题

表格问题汇总&#xff1a; 现代网站中表格的用武之地已经很少了&#xff0c;但是一些框架&#xff0c;如bootstorp还是会用到的&#xff0c;所以还是需要了解掌握。本随笔只涉及开发过程中遇到的表格问题&#xff0c;不做其他拓展。 1、caption代表的是表格元素的标题。至于标题…

利用Underscore求数组的交集、并集和差集

1 数组交集函数——intersection 数组的交集是指包含多个数组中的共同元素的一个数组&#xff0c;求数组的交集就是找出给定数组中的共有元素。 下面实现一个求两个数组交集的函数。 判断数组是够包含指定值&#xff0c;使用Array.indexOf就可以。所以我们可以遍历第一个参数数…

RT-Thread简介

RT-Thread简介 RT-Thread是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff08;RTOS&#xff09;&#xff0c;具有完全的自主知识产权。 经过16个年头的沉淀&#xff0c;伴随着物联网的兴起&#xff0c;它正演变成一个功能强大、组件丰富的物联网操作系统。 RT-Thre…