由于专业的原因,我到了大三下学期的后半段才学习数据结构。虽然以往学习编程的时候也有接触,这次也算是系统的学了一下。不过我们的数据结构课程是以c语言为基础讲的。而我的c语言还一直停留在大一的阶段。所以又开始从头开始看c语言。由于学习了一段时间的java,也算是对编程有些许感觉,这次c语言的学习也算顺利。但是毕竟,作为高级语言的java比较简单,面向对象的思想也已深入头脑,对c语言有些不适应。所以也就开始找起一些共同点方便学习。基础语句不用说,主要是思想上的共通。面向对象与面向过程,我一直不完全理解其中的区别,我认为,这两个不应该是同等级的,面向对象应该是面向过程的一种封装,我认为是程序都必然要面向过程,因为程序执行的本身就是过程,这也是编程基础。而面向对象只不过将过程分块更为清晰,操作起来更加容易理解罢了(纯个人理解)。想到这里,我就有些明白c与java。java面向对象,无非是创建对象调用方法。这是一种编程模式。所以既然如此,c语言也一样可以实现这种功能。所以我开始找寻c语言编程中“面向对象”的相似之处。java中一切皆为对象,其方法也就是对这个对象的一种操作变化而已。c中,我认为这是一样的,在c语言中函数也不过是对自身某种变量的一些算法计算。而对这个“对象”的操作,也不过就是指针而已。这里我就开始想到一个把c语言模仿成java的一种方式(只是一种测试,实际编写中不必这样)。java的对象,我在c中就写成对应的结构体形式。而实际创建出即new出的对象,就对应成为结构体指针(new出对象即是给结构体分配内存空间)。而大家也知道c中不可以像java中把函数写在结构体里,那如何对应java中的方法么。对象中的方法,就是操作该对象本身的属性的。所以在c中完全可以在函数中传入结构体指针地址,来操作这个结构体里的“属性”。这样就跟这个结构体绑定了。就如同java中一个类的方法一样。通过这个思想,就可以很容易把已经习惯了的面向对象的思维转化到c语言中。当然我是c的初学者,还远远不知道c的博大精深。不过通过这种方法熟悉c的编写,进行快速入门我感觉还是十分不错的。
/** JAVA **/ class Studeng(){ int num; //学号 public int getNum(){ return this.num; } } /** C **/ typedef struct Student{ int num; }Student; …… Student *student; …… int getNum(Student *student){ int num=student->num; return num; }
这只不过是我学习c的一个思路,帮助我学习c语言。并不意味着c语言一定要想java那样编程。c语言的编程之路还有很长时间要走,想要学好,只能通过努力去大量的练习。加油!
(以上文字纯是我自己的思路与想法,可能有些错误,甚至违背了一些c的编程理念,欢迎批评指正)
2014年9月
没想到这个两年前偶然想到的方法,现在却真实的用到了。当时只是为了让C语言可以按照java的模式编写一些简单的代码方便我使用习惯的面相对象的编程方式,才研究了通过传递指针来模拟“类与方法”的连接。结果最近学习python发现,python的类就是用这种方式来实现的,原以为是我自己想出来的一个小技巧没啥实际意义,结果竟然在一门成熟的语言中发现了,到时挺有成就感的!
相关推荐
Windows的自定义消息句柄处理过程非常类似于Swing编程中Frame类与监听器的关系,只不过Java的虚拟机隐藏了底层系统的细节部分。这使得本人在学习了VC++的非模式对话框编程之后,更加理解了Java中Swing编程的原理--...
涉及到的知识点包括Java语言基础,JDBC数据库操作,C/S架构以及集成开发环境的使用。 10. **项目提交感想**:通过项目实践,不仅提升了编程技能,还锻炼了团队协作能力和问题解决能力。遇到问题如数据库连接问题时...
C程序设计是计算机科学的基础,它是许多现代编程语言的基石,包括C++、Java和Python等。本资源“C程序设计学习”旨在帮助初学者掌握C语言的基本概念、语法和编程技巧,从而能够编写出高效、可读性强的C程序。 C语言...
大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦掌,看到Interface Builder之后,第一感想是跃跃欲试,而看到Objective-C的语法,第一感想就变成就望而却步了。好吧,我是在说我自己。 如果你和我...
大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦掌,看到Interface Builder之后,第一感想是跃跃欲试,而看到Objective-C的语法,第一感想就变成就望而却步了。好吧,我是在说我自己。 如果...
项目完成后,我对Java开发有了更深的理解,包括数据库操作(如Access和SQL Server)、GUI界面设计(如Eclipse)、C/S架构的运用,以及JDBC数据库连接等。这次实习让我认识到,实际开发不仅需要技术,还需要良好的...
1. **编程能力**:IBM会测试应聘者的编程基础,包括但不限于C, C++, Java, Python等语言。题目可能涉及算法设计、数据结构、时间复杂度和空间复杂度分析等。熟悉基本的排序、查找算法,了解递归、动态规划等高级算法...
16demo1.c仅仅将显示功能分离出来,而16demo2.c则进一步将字符、颜色的赋值与显示功能分开,通过三个独立的子函数实现,并将函数指针封装到结构体内部。这种设计更接近于面向对象编程的封装思想,因为结构体内部的...
在这个场景中,CMM可能是一个自定义的编程语言,或者是类似于C或C++的已知语言的变体。 JavaCC(Java Compiler Compiler)是用于生成词法分析器和语法分析器的开源工具。它使用Java语言来定义词法规则和语法规则,...
如果大家平时做过一些前端开发方面的工作,一定会有这样的体会:页面需要某种效果或者插件的时候,我们一般会有两种选择: 1、上网查找相关的JS插件,学习其用法 2、自己造轮子,开发插件。 寻找存在的插件 第一种...
通过安装其他插件,如C/C++开发工具包(CDT),Eclipse可以支持多种编程语言。 **3.2 跨平台支持** Eclipse不仅支持多种编程语言,还支持多种人类语言。通过使用特殊的插件片段(plug-in fragment),Eclipse可以...
目 录 序言 前言 读者指南 第1章 引言 1 1.1 什么是设计模式 2 ...1.2 Smalltalk MVC中的设计模式 3 ...6.11 临别感想 237 附录A 词汇表 238 附录B 图示符号指南 241 附录C 基本类 244 参考文献 249
本科学的东西很杂,很多课程硬件和软件的知识揉到了一起,本科自己编程不多,完成的就是数据结构上的算法题和C ++入门大概60道题,刚刚本科毕业的时候Java基础都搞不清。幸得我本科毕业后遇到了很多对我人生帮助很大...
在进行Tomcat服务器的安装与配置过程中,积累了一些实用的经验和技巧,本文将详细介绍这些心得,并分享具体的步骤和注意事项。 #### 一、环境准备 1. **JDK安装**:确保系统已经正确安装了JDK(Java Development ...
程序设计语言的多样性也是现代计算机的一大特点,编程人员可以根据需求选择不同的编程语言,如C、C++、Java、Python等,这些语言极大地简化了编程过程,使得计算机能够更好地服务于人类社会的各个领域。 计算机的...
首先,程序中定义了一个名为`stu`的结构体,它包含四个无符号字符类型的成员(`c`, `os`, `masm`, `java`)和一个指向下一个`stu`结构体的远指针`next`。数组`a`存储了这些结构体,`sum`数组用来计算每个元素各字段...
#### 四、C/C++/Java 的差异 - **语言特性**:虽然文档中没有给出具体的细节,但通常涉及语言的基本语法、内存管理、面向对象编程等方面的不同。 #### 五、多态性 - **虚函数表**:这是实现运行时多态的关键机制...
Python是一种简洁易用的语言,它的语法特点是使用换行符作为每条语句的分隔,而不是像C、Java那样使用分号。Python支持分号,但它的作用已经不像C、Java那样重要了,Python中的分号可以省略。 在Python中,如果要在...
目 录 序言 前言 读者指南 第1章 引言 1 1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 ...6.11 临别感想 237 附录A 词汇表 238 附录B 图示符号指南 241 附录C 基本类 244 参考文献 249