(2)结构体和类都是可以嵌套的。
但是不同在于:(1)C语言中结构体中只可以定义成员变量,如果你说你在结构体中可以定义成员函数和构造函数,那应该是C++而不是C语言,C语言作为面向过程的语言是要将数据和算法进行分离的。Java的类除了可以封装成员变量,还可以封装成员函数,也就是对于成员变量的操作。(2)结构体中的成员变量都是可以直接访问的,而类则可以通过声明public、protected、private或者不加权限修饰符来进行访问权限的控制。另外类是可以继承的,子类可以通过继承获得父类的一些属性或者方法,这是结构体所不具有的。(3)结构体仅仅是封装数据用的,也可以说仅仅是自定义的一种变量类型;而java作为一种纯面向对象语言,将所有东西都封装在类中,包括程序执行入口的Main方法。(4)要单纯说Java的类相对于C语言结构体的优势,倒不如宏观上看面向对象编程思想和面向过程编程思想的区别,这是两种不同的思维方式,楼主可以看一下比较经典的斐波那契数列的面向过程解题方法和面向对象解题方法。
严格来说,C语言中没有类,只有C++中才有类。
不过对于结构体和类的区别,从内存数据组织角度这里有一个关键即:
结构体仅仅是数据的组合
类是数据和方法 的组合,虽然也有只有数据的类,但绝大多数类是和对应方法绑定的。