当前位置:网站首页>第一部分—C语言基础篇_1. C语言概述
第一部分—C语言基础篇_1. C语言概述
2022-07-17 10:23:00 【qq_43205256】
1.1 C语言
语言是人和人交流,C语言是人和机器交流。
语言有独特的语法规则和定义,程序员必须遵循这些规则和定义才能实现与计算机的交流。
1.1.1 计算机结构组成

计算机由三大部分组成:输入、处理器、输出。
需要着重了解的是,运算器从寄存器中读取数据、寄存器从内存中读取数据、内存从外储存中读取数据。
1.1.2 计算机系统组成

这里混个脸熟就行,大概了解一下计算机系统由哪些组成。后面会逐渐熟悉这些组成部分。
1.2 为什么要学习C语言
1.2.1 C语言特点
1) 优点
- 执行速度快
- 功能强大
- 编程自由
2) 缺点
- 写代码实现周期长
- 可移植性较差
- 对平台库依赖较多
1.2.2 学习C语言理由

1.2.3 C语言应用领域
C语言的应用极其广泛,从网站后台,到底层操作系统,从多媒体应用到大型网络游戏,均可使用C语言来开发:
- C语言可以写网站后台程序
- C语言可以专门针对某个主题写出功能强大的程序库
- C语言可以写出大型游戏的引擎
- C语言可以写操作系统和驱动程序,并且只能用C语言编写
- 任何设备只要配置了微处理器,就都支持C语言。从微波炉到手机,都是由C语言技术来推动的

1.2.4 C语言要学习的内容
C语言仅有32个关键字,9种控制语句,34种运算符,却能完成无数的功能:



先混个脸熟,大概了解要学习多少内容。
1.2.5 学习C常见困惑

1.3 第一个C语言程序:HelloWorld
1.3.1 编写C语言代码:hello.c
#include <stdio.h>
int main()
{
printf("hello world\n"); //第一个代码
return 0;
}在VS上输入以上代码(VS的安装和初步使用请自行在B站上找个视频学一下,大概半小时就能掌握)。
1.3.2 代码分析
1) include头文件包含
- #include的意思是头文件包含,#include <stdio.h>代表包含stdio.h这个头文件
- 使用C语言库函数需要提前包含库函数对应的头文件,如这里使用了printf()函数,需要包含stdio.h头文件
#include< > 与 #include "" 的区别:
- < > 表示系统直接按系统指定的目录检索
- "" 表示系统先在 "" 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索
2) main函数
- 一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数,必须有)和若干个其他函数结合而成(可选)。
2. main函数是C语言程序的入口,程序是从main函数开始执行。
3) {} 括号,程序体和代码块
- {}叫代码块,一个代码块内部可以有一条或者多条语句
- C语言每句可执行代码都是";"分号结尾
- 所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的
- 所有的可执行语句必须是在代码块里面
4) 注释
- //叫行注释,注释的内容编译器是忽略的,注释主要的作用是在代码中加一些说明和解释,这样有利于代码的阅读
- /**/叫块注释
- 块注释是C语言标准的注释方法
- 行注释是从C++语言借鉴过来的
5) printf函数
- printf是C语言库函数,功能是向标准输出设备输出一个字符串
- printf(“hello world\n”); \n的意思是回车换行
6) return语句
- return代表函数执行完毕,返回return某些数值
- 如果main定义的时候前面是int,那么return后面就需要写一个整数;如果main定义的时候前面是void,那么return后面什么也不需要写
- 在main函数中return 0代表程序执行成功,return -1代表程序执行失败
- int main()和void main()在C语言中是一样的,但C++只接受int main这种定义方式
以上对代码各部分的解析先稍作了解即可,随着继续深入学习后自然会懂。
1.4 C语言编译过程
1.4.1 C程序编译步骤
C代码编译成可执行程序经过4步:
- 预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检 查语法(生成.i文件)
- 编译: 检查语法,将预处理后文件编译生成汇编文件(生成.s文件)
- 汇编: 将汇编文件生成目标文件(生成.o文件)
- 链接: C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执 行程序中去(生成.exe文件)

边栏推荐
猜你喜欢

ETCD数据库源码分析——etcdserver bootstrap从快照中恢复store

uniapp仓库管理系统源码

MySQL view

Set the ID field to increase automatically when creating tables in SQL Server (Navicat demo)

Data Lake (20): Flink is compatible with iceberg, which is currently insufficient, and iceberg is compared with Hudi

企业数字化转型,为何 SaaS 模式如此重要?

Un7.16: how to deploy projects on code cloud and invite team members?

多租户 SaaS 的数据库设计模式,你学废了吗?

Day 6 training

C51 常见数据类型详解
随机推荐
案例分享 | 基于Linkis+DSS构建合合信息一站式数据开发平台
Jsp+ajax+servlet+mysql to realize addition, deletion, modification and query (I)
Flink小知识--任务调度slot的配置 slotSharingGroup
Flink small knowledge -- configuration of task scheduling slots slotsharinggroup
【性能优化方法论系列】六、总结
焱融科技入选北京市 2022 年度“专精特新”,领航混合云文件存储
Target detection model size calculation, model complexity (parameter conversion formula)
企业数字化转型,为何 SaaS 模式如此重要?
易贝按关键字搜索EBAY商品 API 返回值说明
MySQL--SQL优化案例--隐式字符编码转换
多租户 SaaS 的数据库设计模式,你学废了吗?
Resolve the applicationeventmulticast not initialized - call 'refresh' before multicast events exception
EBay searches eBay products by keyword API return value description
pytorch 调用 cublasLtMatmul 做 gemm同时加bias的代码,写的不错
L1-088 静静的推荐(测试点1)
Etcd database source code analysis - initialize etcdserver structure
目标检测模型大小计算,模型复杂度(参数换算公式)
Encapsulation API, request interception, response interception, authentication timeliness
Static routing!! Static routing!! Static routing!!
Questions d'entrevue - concevoir des cas d'essai pour:: memcpy