`
liguanyi11111
  • 浏览: 61680 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类
最新评论

java与c的一些感想

 
阅读更多

       由于专业的原因,我到了大三下学期的后半段才学习数据结构。虽然以往学习编程的时候也有接触,这次也算是系统的学了一下。不过我们的数据结构课程是以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的类就是用这种方式来实现的,原以为是我自己想出来的一个小技巧没啥实际意义,结果竟然在一门成熟的语言中发现了,到时挺有成就感的!

分享到:
评论

相关推荐

    VC++ 6.0非模式对话框示例以及对比Java的Swing编程的感想

    Windows的自定义消息句柄处理过程非常类似于Swing编程中Frame类与监听器的关系,只不过Java的虚拟机隐藏了底层系统的细节部分。这使得本人在学习了VC++的非模式对话框编程之后,更加理解了Java中Swing编程的原理--...

    由C#转Object-C开发入门基础

    大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦掌,看到 Interface Builder之后,第一感想是跃跃欲试,而看到Objective-C的语法,第一感想就变成就望而却步了。好吧,我是在说我自己。 如果...

    javascript插件开发的一些感想和心得

    如果大家平时做过一些前端开发方面的工作,一定会有这样的体会:页面需要某种效果或者插件的时候,我们一般会有两种选择: 1、上网查找相关的JS插件,学习其用法 2、自己造轮子,开发插件。 寻找存在的插件 第一种...

    JAVA经典设计模式大全

    目 录 序言 前言 读者指南 第1章 引言 1 1.1 什么是设计模式 2 ...1.2 Smalltalk MVC中的设计模式 3 ...6.11 临别感想 237 附录A 词汇表 238 附录B 图示符号指南 241 附录C 基本类 244 参考文献 249

    My_Java_nowcoder:自己总结的复习资料参考总结的一些代码和结构图文件夹

    本科学的东西很杂,很多课程硬件和软件的知识揉到了一起,本科自己编程不多,完成的就是数据结构上的算法题和C ++入门大概60道题,刚刚本科毕业的时候Java基础都搞不清。幸得我本科毕业后遇到了很多对我人生帮助很大...

    设计模式文档

    目 录 序言 前言 读者指南 第1章 引言 1 1.1 什么是设计模式 2 1.2 Smalltalk MVC中的设计模式 3 1.3 描述设计模式 4 ...6.11 临别感想 237 附录A 词汇表 238 附录B 图示符号指南 241 附录C 基本类 244 参考文献 249

    一个C++程序员的学习经历

    正在上网的时候有这个念头的,所以急急忙忙找了一些学习编程的高人的感想:我开始学VC时就是自己一个人在啃,也没什么人指导,当时没有条件上网,资料特别少,在书店里随便买本书就学了,在学VC的过程中走了许多弯路...

    数据库课程设计题目汇总.doc

    《数据库原理及技术》课程设计 一、课程设计的目的和要求 (1)培养学生理解与《数据库原理》课程相关的理论知识,学会分析实际问题的能力。 (2)培养学生运用《数据库原理》相关知识设计系统应用的思想和方法。 ...

    关于javascript中this关键字(翻译+自我理解)

    下文有大概70%的内容出自http://www.quirksmode.org/js/this.html,另外30%是我自己对它的理解和感想。希望能对有需要的人一点帮助。。。 首先,先看一个很典型的关于this关键字题目: 代码如下: var name = ‘hong...

Global site tag (gtag.js) - Google Analytics