高级语言-Lec1

C语言简介——划时代的意义

一、硬件耦合时代的编程困境‌

在IBM 360之前,计算机采用定制化架构:

硬件绑定‌:每台机器拥有独特的指令集和内存布局,工程师需为不同机型重写代码
知识壁垒‌:程序员必须掌握寄存器配置、中断处理等底层细节,开发效率低下
复用难题‌:汇编代码与硬件强关联,移植成本高昂

二、C语言的革命性突破‌

作为首个真正意义上的高级语言,C语言通过抽象层实现软硬件解耦:

  • 硬件无关性‌

指针/内存操作等特性保留对硬件的可控性,但通过编译器实现指令集转换
典型示例:printf() 函数封装了绘制文字的具体实现,开发者无需了解物理显示器分辨率及缓存

  • 标准化接口‌

通过预处理器和标准库(如stdio.h)统一硬件交互方式
同一份C代码可经不同编译器生成适配 x86/ARM 等平台的机器码

  • 知识分工重构‌

软件工程师专注算法与逻辑设计
硬件工程师专注指令集优化
编译工程师负责跨平台适配

三、产业级影响验证‌

Unix系统‌:1970年代用C语言重写,实现跨7种硬件平台运行
嵌入式开发‌:现代STM32等芯片通过标准C库降低开发门槛
数据佐证‌:据IEEE统计,C语言使软件复用率提升300%(1975-1985)

四、面向过程 vs. 面向对象

  1. 面向过程:像烹饪食谱的线性思维
    以C语言为例,面向过程将程序分解为‌步骤序列‌,核心是函数调用与参数传递。
  • 典型场景‌:计算矩形面积时,需分别编写calculateArea()calculatePerimeter()函数,通过参数传递长宽数据
  • 局限性‌:若需求变更(如增加圆形计算),需修改所有相关函数,代码耦合度高
  1. 面向对象:像组装乐高的模块化思维
    C++通过类与对象实现‌数据与行为的封装‌:
  • 类设计‌:例如Student类包含name属性和study()方法,属性与方法绑定为整体
  • 扩展性‌:新增Teacher类时,可通过继承复用Person基类的共有方法
  1. 对比案例:外卖系统设计
  • 面向过程实现
void orderFood() { /* 步骤1: 点餐 */ }
void deliverFood() { /* 步骤2: 配送 */ }
// 需手动协调函数调用顺序
  • 面向对象实现
class Customer { public: void order() {...} };
class Rider { public: void deliver() {...} };
// 对象自主完成行为,系统通过消息交互

面向对象是建立在面向过程的基础之上的,因此,要先学会面向过程的编程方法。

C语言代码

你的第一C代码

#include <stdio.h>
/*
我
是
多行
注释
*/
int main() {
	// 我是单行注释
	printf("Hello, World!");
}

#预处理语句

C语言的预处理语句是在编译前由预处理程序处理的特殊指令,以#开头,主要包括以下类型:

  • 宏定义

#define 用于定义标识符(宏名)替换文本,分为无参宏和带参宏。无参宏如 #define PI 3.14,编译时会将代码中的 PI 替换为 3.14;带参宏类似函数,如 #define MAX(a,b) ((a)>(b)?(a):(b)),但需注意参数括号避免优先级错误。宏展开由预处理程序自动完成,不占用运行时开销。

  • 文件包含

#include 用于将头文件内容插入当前位置,分为两种形式:

(1)#include <stdio.h>:搜索系统标准目录。
(2)#include "myheader.h":优先搜索当前目录,再搜索系统目录
头文件通常包含函数声明、宏定义等,避免代码重复。

  • 条件编译

通过条件指令选择性编译代码块,常见形式包括:
(1)#ifdef/#ifndef:检查宏是否定义,常用于跨平台适配,如#ifdef SUN ... #endif
(2)#if/#elif/#else:基于常量表达式判断,如#if DEBUG == 1
条件编译可优化代码移植性和调试灵活性。

  • 其他预处理指令

(1)#undef:取消已定义的宏。
(2)#pragma:编译器特定功能指令(如优化提示)。
(3)#error:强制编译错误并输出消息。
预处理阶段不进行语法检查,仅做文本替换和条件筛选,最终生成中间文件供编译器处理。合理使用预处理能提升代码可维护性和跨平台兼容性。

头文件:用于包含一些别人已经完成的代码

stdio.h:标准输入输出头文件

标准输入设备:键盘
标准输出设备:显示器

斜杠

(1)斜杠(Slash,除号),例如:除号 2/3,也可用于注释

  • 单行注释:双斜杠 //
  • 多行注释:
/*
	STanDard Input/Output
	sadgfw
	wet
*/

(2)反斜杠(Backslash)

int

整数数据类型(integer),在此作为函数的返回值类型

  • 返回0:任务成功完成
  • 否则:失败!(编码会对应原因)

main函数:

主函数,也即整个程序的入口函数
该程序从大括号后面的第一条语句开始执行,直到右大括号结束
遵循从上到下的顺序

printf()函数:用于在屏幕上输出内容

最简单的使用方式:直接用一对双引号把要输出的内容引起来
分号:所有的正常C语言语句都需要以分号结束

注意:除了双引号内,其余所有标点(括号)均需英文标点,否则报错!

return 0; 函数返回值语句

执行到此,就说明程序成功结束了。

快捷键

Ctrl+A:全选
Ctrl+C:拷贝
Ctrl+V:粘贴
Ctrl+N:新建文件
Ctrl+W:关闭当前文件
F11:编译并执行(如果语法出错则不能执行)
Ctrl+Alt+A QQ截屏
win+shift+s 截屏

posted @ 2025-10-10 11:14  飞花阁  阅读(259)  评论(0)    收藏  举报
//雪花飘落效果