大家好,这是我关于 C 语言学习记录的系列博客。在这个系列中,我将按照以下目录逐步深入学习 C 语言:
希望通过这些记录,不仅能帮助自己巩固知识,也能给正在学习 C 语言的小伙伴们一些参考。
软件是为了满足用户的特定需求而开发的一系列计算机程序、数据和相关文档的集合。从分类上来说,软件主要分为操作系统和应用软件。操作系统是管理计算机硬件与软件资源的程序,常见的有 Windows、Linux、Mac、Unix、Android、IOS、鸿蒙等;应用软件则是为了满足用户的各种具体需求而开发的程序,如 QQ、微信、钉钉、Steam、支付宝、浏览器以及其他各类工具软件。
软件由指令和数据构成。数据一方面可以由软件自动生成,另一方面也可以是用户录入的信息;而指令通常由程序员编写,近年来人工智能技术也逐渐应用于辅助代码生成,但在实际软件开发中,程序员的主导地位依然显著。
程序员依靠计算机编程语言来完成软件的编写。编程语言的发展经历了从低级到高级的过程。
低级编程语言包括二进制编程语言和汇编语言。二进制编程语言由 0 和 1 组成,它是计算机能够直接理解和执行的语言,是计算机硬件的基础语言。但它的门槛高,可读性低,维护困难。汇编语言使用助记符(如 MOV 表示移动数据、ADD 表示加法运算等)代替具有某些特殊功能的二进制组合,更多应用于硬件相关的操作系统。不过,不同的硬件操作系统对应的助记符也不一样,编程相对还是比较困难,程序员需要记忆大量的助记符,并且它更偏向于硬件层面,用它来开发软件会比较繁琐。
高级编程语言主要以 C 系语言为主,包括 C 语言、C++、Java、C#、Go 等。高级编程语言可分为结构化编程和对象化编程。C 语言是一门典型的结构化编程语言,而 C++、Java、C#、Go、Python、JavaScript 等则属于对象化编程语言。结构化编程强调亲力亲为,看重过程,关注事务如何一步一步地变化到结果;对象化编程将数据和操作数据的方法封装在对象中,通过对象之间的交互来完成任务,更注重数据的抽象和封装,相较于结构化编程,过程步骤的表现形式更加隐蔽。
C 语言是一门通用的结构化的计算机编程语言,广泛应用于底层开发,如操作系统内核开发(像 Linux 内核大部分就是用 C 语言编写的)、嵌入式系统开发(智能家电、汽车电子等设备中的控制系统)、驱动程序开发等。C 语言的设计目标是提供一种能以简易的方式编译,处理低级存储器,产生少量的机器码,并且不需要任何运行环境支持便能运行的编程语言。它具有高效性和可移植性强等特点,使得它在不同的硬件平台和操作系统上都能很好地运行。
//本篇因为篇幅原因不会介绍VS工具的安装和环境配置,和项目创建如有需求请下面留言
下载网站:免费的开发人员软件和服务 - Visual Studio
2、第1个C语言程序
//本篇因为篇幅原因不会介绍VS工具的安装和环境配置,和项目创建如有需求请下面留言
下载网站:https://visualstudio.microsoft.com/zh-hans/free-developer-offers/
// 编写C语言的步骤:
// 1. 打开VS工具
// 打开 Visual Studio 开发环境,若还未安装,可从 https://visualstudio.microsoft.com/zh-hans/free-developer-offers/ 下载。
// 2. 创建项目
// 在VS中,选择“创建新项目”,这里我们选择“控制台应用程序”类型,因为它适合初学者编写简单的C语言程序。
// 3. 创建源文件
// 在项目中,右键点击“源文件”文件夹,选择“添加” -> “新建项”,创建一个扩展名为 .c 的源文件,例如 main.c。
// 4. 编写C语言代码
// 本篇因为篇幅原因不会介绍VS工具的安装和环境配置,以及项目创建,如有需求请在下面留言。
// #include 是一个预处理指令,它的作用是包含标准输入输出库的头文件。
// 头文件中包含了很多函数的声明,比如我们下面要用到的 printf 函数。
#include
// #define _CRT_SECURE_NO_WARNINGS 是一个宏定义,用于消除VS工具关于代码安全和缓冲区溢出的警告。
// 因为VS为了提高代码安全性,会对一些标准C库函数(如 scanf、strcpy 等)给出警告,使用这个宏可以忽略这些警告。
#define _CRT_SECURE_NO_WARNINGS
int main() {
/* printf 是一个库函数,引用它需要添加 头文件 */
// printf 函数用于向标准输出设备(通常是控制台)打印信息。
// 这里我们打印了 "Hello World!" 并换行。
printf("Hello World!\n");
// return 0; 表示程序正常结束,返回值 0 通常表示程序执行成功。
return 0;
}
运行快捷键:Ctrl + F5 / Fn + Ctrl + F5
调试:F10
代码编写完毕之后,有2种运行方式:运行,调试
查看每种数据类型的内存大小:
#include
#define _CRT_SECURE_NO_WARNINGS
int main() {
//数据类型
//软件:指令 + 数据
//指令:依靠程序员编写
//数据:程序生成,用户输入
//数据类型:就是一种识别数据对应类型的东西!
//C语言中:整数,浮点数,字符 //整数:
// short - 短整型 2字节=-32768~+32767
// int - 整型 4字节=正负21亿 默认
// long - 长整型 4字节=正负21亿 8字节= 94京
// long long - 更长整型 8字节= 94京
//浮点数:
// 单精度 - float 4
// 双精度 - double 8 默认
//字符:
//char - 字符
// 字节:计算机存储数据的最小单位 Byte
// 1KB=1024Byte // 1MB=1024KB
// sizeof 关键字的作用:查看某一个东西的内存大小
printf("short的大小:%d\n", sizeof(short));//2字节
printf("int的大小:%d\n", sizeof(int));//4个字节
printf("long的大小:%d\n", sizeof(long));//4个字节
printf("long long的大小:%d\n", sizeof(long long));//8个字节 Java 中的 long
printf("float的大小:%d\n", sizeof(float));//4个字节
printf("double的大小:%d\n", sizeof(double)); //8个字节
printf("char的大小:%d\n", sizeof(char));//每个字符在C语言,都占用1个字节的大小
return 0;
}
注意:1个字节 = 8 个 二进制位(bit位)!
每个bit位,放置的是:0 / 1
1024Byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
#include
#define _CRT_SECURE_NO_WARNINGS
int main() {
// 数据类型:整数,浮点数,字符
int age = 99;
int money = 100;
// %d 代表的:该占位符,打印为整数
printf("年龄=%d\n", age);
printf("钱 =%d\n", money);
double salary = 10000.5;
// %.2f 表示保留两位小数输出浮点数
printf("%.2f\n", salary);
// 超过 1 个以上的字符,称为字符串
char gender = 'M'; // 这里假设性别用 'M' 表示男性
// %c 用于打印单个字符
printf("%c\n", gender);
// short 正负 32767,int 正负 21 亿,long long 正负 94 京
// 绝大多数的编程语言中,整数类型默认是:int
// l & L 代表数值是长整型
long long property = 1001561560L;
// %lld 用于打印长整型
printf("我的资产是:%lld", property);
return 0;
}