A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奚华 中级黑马   /  2012-11-18 16:30  /  12378 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 奚华 于 2012-11-19 17:03 编辑

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

5 个回复

倒序浏览
本帖最后由 廖力 于 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基本可以理解为简单的类,里面有属性(包括基础数据类型和指针,可以嵌套使用),但是没有方法
回复 使用道具 举报
我没写准确,C里就是struct,java里有没有这样的结构?
你说C中的struct没有方法是错的,里面可以有方法的!
回复 使用道具 举报
奚华 发表于 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 . . .
回复 使用道具 举报
我记错了,sorry!
回复 使用道具 举报
java里的class其实就相当于c中的结构体。java里没有struct。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马