黑马程序员技术交流社区

标题: java中有没有类似于c语言中Structure结构? [打印本页]

作者: 奚华    时间: 2012-11-18 16:30
标题: java中有没有类似于c语言中Structure结构?
本帖最后由 奚华 于 2012-11-19 17:03 编辑

今天看一个帖子,这个帖子解释java的class文件的结构,帖子的主人使用了C语言来解释,里面用到了C语言中的Structure结构,不禁让我想起C语言的好处来,我也在想java有没有这样一种机制来完成C中的Structure,要不然我老是觉得C语言是最本质的语言,老信不过JAVA!求解!

作者: 廖力    时间: 2012-11-18 17:29
本帖最后由 廖力 于 2012-11-18 17:33 编辑

c里面的不是struct么?结构体 Structure没见过。。。
  1. //gcc的编译器,devcpp的IDE
  2. //定义
  3. struct Node{
  4.         int data;
  5.         struct Node *next;
  6. };
  7. //申明
  8. struct Node *p;
  9. //赋值
  10. pNew->data = d;
  11. pNew->next = NULL;
复制代码
struct基本可以理解为简单的类,里面有属性(包括基础数据类型和指针,可以嵌套使用),但是没有方法
作者: 奚华    时间: 2012-11-18 17:32
我没写准确,C里就是struct,java里有没有这样的结构?
你说C中的struct没有方法是错的,里面可以有方法的!
作者: 廖力    时间: 2012-11-18 18:18
奚华 发表于 2012-11-18 17:32
我没写准确,C里就是struct,java里有没有这样的结构?
你说C中的struct没有方法是错的,里面可以有方法的 ...

根据谭浩强c语言程序设计这本书 原话:
“结构”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。
里面不可能有函数 只能有函数指针 由函数指针指向其他函数
函数指针是指针 指针也是基本数据的一种
自己在机子上实验了一下 里面只要有类似函数的就会报错
个人理解是结构体是一种数据 函数是一种操作过程
  1. //gcc的编译器,devcpp的IDE
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <malloc.h>

  5. struct Data{
  6.         int data;
  7.         int (*pSayHello)();
  8. };

  9. int sayHello(int data){
  10.         printf("Hello %d",data);
  11.         return 1;
  12. }

  13. int main(){
  14.         struct Data *p1;
  15.         int i = 0;
  16.         p1 = (struct Data *)malloc(sizeof(struct Data));
  17.         p1->data = 9;
  18.         p1->pSayHello = sayHello;
  19.         i = p1->pSayHello(p1->data);
  20.         return i;
  21. }
复制代码
运行结果:
Hello 9
--------------------------------
Process exited with return value 1
Press any key to continue . . .
作者: 奚华    时间: 2012-11-18 18:35
我记错了,sorry!
作者: 王震阳老师    时间: 2012-11-18 19:30
java里的class其实就相当于c中的结构体。java里没有struct。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2