C语言和Java区别

结构体vs类

C语言没有类,但是有结构体,结构体中不能有函数,只能有属性。

面向过程的思考方式中,数据和操作是严格分离的。1

声明调用顺序?2

C语言,先声明后调用,想要调用一个子流程,势必要在调用之前就定义好。

Java,没有函数定义先后的问题。

C 编译器(传统实现)扫描源文件时是从上往下、一遍过 的。当它遇到函数调用时,必须当场知道这个函数的签名(返回类型、参数类型),因为:

1、要生成正确的机器码:返回值占几个字节、参数怎么压栈,调用的同时就要确定;

2、要做类型检查:你传 int 给接收 char* 的函数,必须在调用点报错。

Java 编译器是多趟扫描 的:

第一趟:从头到尾读完整个 .java 文件,把所有类的成员(字段、方法签名)先登记进符号表;

第二趟:再逐方法检查方法体里的调用是否合法。

分工职责

没必要分成一个专门写变量、一个专门写方法的,用Java类根据要实现的功能实现方法(写方法自设变量)。

语言历程

年份 语言 作者/公司 为什么会出现
1972 C Dennis Ritchie(贝尔实验室) 重写 Unix 操作系统,需要能直接操作硬件的高级语言
1983~85 C++ Bjarne Stroustrup(贝尔实验室) 在 C 基础上加面向对象,管理越来越大的软件项目
1991~95 Java James Gosling(Sun 公司) 对 C++"做减法":去掉指针、加垃圾回收、实现跨平台
2000 C# 微软 微软对标 Java 的产物,随 .NET 平台推出

1: C语言知识分享:面向对象和面向过程到底是怎么回事?

2:和 Kimi 的对话

相关推荐
2601_9679801112 小时前
Python 初学者必备的常用内置函数
python·编程语言·内置函数·初学者·常用函数
挖掘狂人2 天前
Vue nextTick 到底在等什么?一篇讲透原理与那些年踩过的坑
javascript·程序员·编程语言
AI前端工程狮3 天前
Agent 不会报错,只会变笨:给 MCP Server 补上契约测试和回放测试
人工智能·编程语言
codigger4 天前
前端没有被杀死,被杀死的是"只会把设计稿变成页面"
前端·ai·ai编程·编程语言·全栈·#人工智能
全栈弄潮儿4 天前
Python实战第13期:模块与包
后端·python·编程语言
codigger5 天前
别再手动催 AI 干活了:一文读懂 Loop Engineering(循环工程)
ai·程序员·编程语言·#人工智能
晓蛋6 天前
什么是C语言
c语言·跨平台·编程语言·高级语言·低级语言
计算机魔术师6 天前
做前端 UI 的人,接下来得先过一道开源技能的"设计质检"
编程语言
苜蓿muxu7 天前
简述 ConcurrentHashMap 和 CopyOnWriteArrayList 的区别以及各自适用场景
java·编程语言
路就在脚下8 天前
2026最新Rust入门教程[18]:面向对象语言特性-trait 对象与多态
编程语言