【星计划★C语言】c语言初相识:探索编程之路

🌈个人主页:聆风吟_
🔥系列专栏:星计划★C语言、Linux实践室
🔖少年有梦不应止于心动,更要付诸行动。
文章目录
- 📋前言
- 一. ⛳️第一个c语言程序
- 二. ⛳️数据类型
- 2.1 🔔数据单位
- 2.2 🔔计算机中常用的单位
- 2.3 🔔C语言中的关键字
- 二. ⛳️常量
- 三. ⛳️变量
- 3.1 🔔定义变量的方法
- 3.2 🔔变量的命名规则
- 四. ⛳️整型数据
- 4.1 🔔符号常量
- 4.2 🔔整型变量
- 五. ⛳️浮点型数据
- 5.1 🔔浮点型常量
- 5.2 🔔浮点型变量
- 六. ⛳️字符型常量
- 6.1 🔔字符型常量
- 6.2 🔔转义字符
- 6.3 🔔字符数据在内存中的存储形式以及使用方法
- 七. ⛳️字符串型常量
- 📝全文总结
📋前言
C 语言为什么叫 C 语言呢?其实是因为先有高级语言 ALGOL 60(简称 A 语言),后来它经过简化变为 BCPL 语言(改进后称为 B 语言),而 C语言是在 B 语言的基础之上发展而来的,所以就称为 C 语言。因此,世界上的第一个 C 语言编译器是用 B 语言编写的。目前,主流的编译器是 GCC 编译器。
1972 年,Dennis M. Ritchie 在 B 语言的基础上最终设计出了一种新的语言,他以 BCPL 的第二个字母作为这种语言的名字,这就是 C 语言。

一. ⛳️第一个c语言程序
#include <stdio.h>
//解释:
//main函数是程序的入口
//在整个工程中有且只有一个
int main()
{printf("hello world!\n");return 0;
}
二. ⛳️数据类型
2.1 🔔数据单位
数据类型的分类如下图所示:

char //字符型
short //短整型
int //整型
long //长整型
float //单精度浮点数
double //双精度浮点数
- 为什么会出现这多的数据类型?
答:存储这么多的类型,其实是为了更加丰富的表达生活中的各种值。
- 每种数据类型的大小是多少?
#include <stdio.h>int main()
{//在vs和clion环境下的运行结果printf("%d\n", sizeof(char)); //结果:1printf("%d\n", sizeof(short)); //结果:2printf("%d\n", sizeof(int)); //结果:4printf("%d\n", sizeof(long)); //结果:4printf("%d\n", sizeof(float)); //结果:4printf("%d\n", sizeof(double)); //结果:8
}
小课堂:
- sizeof是一个操作符;
- sizeof用于计算类型或变量所占用的存储空间的大小。
2.2 🔔计算机中常用的单位
| 单位 | 换算关系 |
|---|---|
| 比特(b) | 基本单位 |
| 字节(B) | 1 B = 8 b |
| 千字节(KB) | 1 KB = 1024 B = 2^10 B |
| 兆字节(MB) | 1 MB = 1024 KB = 2^20 B |
| 吉字节(GB) | 1 GB = 1024 MB = 2^30 B |
| 太字节(TB) | 1 TB = 1024 GB = 2^40 B |
注:b = bit、B = Byte。
2.3 🔔C语言中的关键字
c语言中有很多关键字,在后面的章节中遇到后我们在进行介绍(无需记忆),在这里给出是为了让大家对c语言的关键字有个认识,以避免命名变量的时候与关键字重名。c语言中的关键字如下图所示:

二. ⛳️常量
常量:是指在程序运行过程中,其值不发生变化的量。常量又分为整型、实型(也称浮点型)、字符型和字符串型。如下所示:
| 类型 | 举例 |
|---|---|
| 整型 | 100,235,-122,0 |
| 实型 | 3.14,0.125,-4.25 |
| 字符型 | ‘a’,‘b’,‘c’ |
| 字符串型 | “a”,“ab”,“2a3b” |
三. ⛳️变量
变量:是指在程序运行过程中,其值可以发生变化的量。变量名实际上是以一个名字代表一个对应的存储单元地址,编译、链接程序时,由编译系统为每个变量名分配对应的内存地址(就是空间)。从变量中取值实际上就是通过变量名找到内存中存储单元的地址,并从该存储单元中读取数据,如下图所示:

3.1 🔔定义变量的方法
int age = 25;
float weight = 45.5f;
char ch = 'a';
小课堂:在选择变量名和其他标识符时,应尽量做到 “见名知意”。
3.2 🔔变量的命名规则
- 只能由字母(包括大写和小写)、数字和下划线(
_)组成; - 不能以数字开头;
- 变量名区分大小写;
- 变量名不能使用关键字;
- 长度不能超过63字符。

四. ⛳️整型数据
4.1 🔔符号常量
符号常量:在编程语言中使用一个标识符来表示的常量,这个标识符即称为符号常量。定义格式如下:
#define <符号常量名> <常量>
#define PI 3.14
符号常量的使用:
#include <stdio.h>#define PI 3+2 //PI是符号常量int main()
{int i = PI * 2;printf("i = %d\n", i);//输出结果是7return 0;
}
- 为什么输出结果是7,而不是10呢?
答:因为是符号常量PI是直接替换的效果,因此不可以写成PI=5

4.2 🔔整型变量
主要掌握int i足以应对初试,其中变量i是4个字节。
五. ⛳️浮点型数据
5.1 🔔浮点型常量
表示浮点型常量的形式有两种,如下图所示。其中e代表10的幂次,幂次可正可负。

注意:字母
e(或E)之前必须有数字,且e后面的指数必须为整数。

5.2 🔔浮点型变量
通过float f来定义浮点变量,其中f占用4个字节的空间。
六. ⛳️字符型常量
6.1 🔔字符型常量
用单引号('')括起来的一个字符是字符型常量,且只能包含一个字符。例如下图:

6.2 🔔转义字符
假如我们要在屏幕上打印一个目录:c:\code\test.c。
我们的代码应该如何写呢?
#include <stdio.h>int main()
{printf("c:\code\test.c\n");return 0;
}
实际上程序运行的结果是这样的:

这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思,以\开头的的特殊字符称为转义字符。
| 转移字符 | 释义 |
|---|---|
\’ | 用于表示字符常量' |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止他被解释为一个转义序列符 |
\n | 换行 |
\b | 退格符 |
\ddd | ddd表示1~3个八进制的数字。如:\130表示字符X |
\xdd | ddd表示l2个十六进制的数字。如:\x30表示字符0 |
综上所讲,我们开头的代码应该更改为:

6.3 🔔字符数据在内存中的存储形式以及使用方法
字符型变量使用的关键字char进行定义,一个字符型变量占用1个字节大小的空间。一个字符常量存放到一个字符型变量中时,实际上并不是把该字符的字型放到内存中,而是把该字符的ASCII码值放到存储单元中。ASCII表如下所示:
打印字符型变量时, 如果以字符形式打印,那么计算机会到ASCII码表中查找字符型变量的ASCII码值,查到对应的字符后会显示对应的字符。

由上图所示,字符型数据既可以以字符形式输出,又可以以整数形式输出,还可以同过运算获取想要的各种字符。

小课堂:由ASCII码表我们可以很容易发现:小写字母 - 大写字母 = 32。
七. ⛳️字符串型常量
字符串型常量是由一对双引号("")括起来的字符序列。例如下图:
小课堂:
'a'是字符型常量,而"a"是字符串型常量,二者是不同的;- c语言中没有定义字符串型变量的关键字,因此我们需要通过数组对字符串进行存储。
c语言规定,在每个字符串型常量的尾部加一个字符串结束标志,以便系统据此判断字符串是否结束, c语言规定以字符\0作为字符串的结束标志。例如,字符串型常量"CHINA"在内存中的存储方式如下图所示:

#include <stdio.h>int main()
{char c[] = "CHINA";//输出结果为:6//它占用内存单元不是5个字节,而是6个字节,即大小为6//最后一个字符为'\0'//注意:在输出是不输出'\0',因为'\0'无法显示printf("字符串的长度为:%d\n", sizeof(c));return 0;
}
📝全文总结
今天的干货分享到这里就结束啦!如果觉得文章还可以的话,希望能给个三连支持一下,聆风吟的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的最大动力!

相关文章:
【星计划★C语言】c语言初相识:探索编程之路
🌈个人主页:聆风吟_ 🔥系列专栏:星计划★C语言、Linux实践室 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️第一个c语言程序二. ⛳️数据类型2.1 🔔数据单位2.2 &…...
搜维尔科技:借助 ARVR 的力量缩小现代制造业的技能差距
借助ARVR的力量缩小现代制造业的技能差距 搜维尔科技:Senseglove案例-扩展机器人技术及其VR应用...
数据结构之栈和队列
1.前言 大家好久不见,这段时间由于忙去了。就没有即使维护我的博客,先给大家赔个不是。 我们还是规矩不乱,先赞后看~ 今天讲的内容是数据结构中非常重要的一个部分:栈和队列。它在今后的学习中也会再次出现(c&#…...
centos安装使用elasticsearch
1.首先可以在 Elasticsearch 官网 Download Elasticsearch | Elastic 下载安装包 2. 在指定的位置(我的是/opt/zhong/)解压安装包 tar -zxvf elasticsearch-7.12.1-linux-x86_64.tar.gz 3.启动es-这种方式启动会将日志全部打印在当前页面,一旦使用 ctrlc退出就会导…...
4.7学习总结
java学习 一.Stream流 (一.)概念: Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream流是对集合(Collection)对象功能的增强&…...
自定义gitlog格式
git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! 在使用git查看lo…...
Redission--分布式锁
Redission的锁的好处 Redission分布式锁的底层是setnx和lua脚本(保证原子性) 1.是可重入锁。 2.Redisson 锁支持自动续期功能,这可以帮助我们合理控制分布式锁的有效时长,当业务逻辑执行时间超出了锁的过期时间,锁会自动续期,避免…...
非关系型数据库(缓存数据库)redis的集群
目录 一.群集模式——Cluster 1.原理 2.作用 3.特点 4.工作机制 哈希槽 哈希槽的分配 哈希槽可按照集群主机数平均分配(默认分配) 根据主机的性能以及功能自定义分配 redis集群的分片 分片 如何找到给定key的分片 优势 二. 搭建Redis群集…...
MySQL:表的约束(上)
文章目录 空属性默认值列描述zerofill主键 本篇总结的是MySQL中关于表的约束部分的内容 空属性 在进行表的创建时,会有两个值,null和not null,而数据库默认的字段基本都是空,但是在实际的开发过程中要保证字段不能为空ÿ…...
树莓派5使用体验
原文地址:树莓派5使用体验 - Pleasure的博客 下面是正文内容: 前言 好久没有关于教程方面的博文了,由于最近打算入门嵌入式系统,所以就去购入了树莓派5开发板 树莓派5是2023年10月23日正式发售的,过去的时间不算太远吧…...
代码随想录算法训练营第42天| 背包问题、416. 分割等和子集
01 背包 题目描述:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 二维dp数组01背包: 确定dp数组以及下标的含义 …...
Node.js安装及环境配置指南
Node.js安装及环境配置指南 一、Node.js的安装 安装Node.js之前,首先需要确保你的电脑已经安装了合适的编译器和开发环境。Node.js是一个开源的、跨平台的JavaScript运行环境,它使得JavaScript可以在服务器端运行。 下载Node.js安装包 访问Node.js的…...
【Java基础】面试题汇总
Java基础面试题1. JVM vs JDK vs JRE 2. 什么是字节码?采用字节码的好处是什么?3. 为什么说 Java 语言“编译与解释并存”?4. AOT 有什么优点?为什么不全部使用 AOT 呢?5. Java 和 C 的区别?6. Java 中的基本数据类型࿱…...
数据库事务的超级详细讲解,包括事务特性、事务隔离级别、MVCC(多版本并发控制)
数据库事务: 主要有事务特性,事务的隔离级别,MVCC。 事务特性: 事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作,这些操作要么全部成功执行,要么全部不执行ÿ…...
鸿蒙Lottie动画-实现控制动画的播放、暂停、倍速播放、播放顺序
介绍 本示例展示了lottie对动画的操作功能。引入Lottie模块,实现控制动画的播放、暂停、倍速播放、播放顺序、播放到指定帧停止或从指定帧开始播放、侦听事件等功能,动画资源路径必须是json格式。 效果预览 使用说明: 进入页面默认开始201…...
C++面试100问与自动驾驶100问
C的学习和面试其实是非常的不友好的,首先C的学习内容非常的多,其次C的面试不单单面试C的知识点,还有它的“七大姑八大姨”(计算机网络、数据结构、算法、计算机组成原理、操作系统、编译、xxx的底层实现 and so on)。 …...
加速 Redis 操作:掌握管道技术提升性能与效率
Redis 管道技术是一种用于优化 Redis 命令执行效率的机制。在传统的 Redis 操作中,每次向 Redis 服务器发送一个命令,都需要等待命令执行完成并返回结果,这样会导致频繁的网络通信和服务器端的命令执行开销,降低系统的性能和吞吐量…...
深入浅出 -- 系统架构之分布式系统底层的一致性
在分布式领域里,一致性成为了炙手可热的名词,缓存、数据库、消息中间件、文件系统、业务系统……,各类分布式场景中都有它的身影,因此,想要更好的理解分布式系统,必须要理解“一致性”这个概念。 其实关于…...
idea Springboot 电影推荐系统LayUI框架开发协同过滤算法web结构java编程计算机网页
一、源码特点 springboot 电影推荐系统是一套完善的完整信息系统,结合mvc框架和LayUI框架完成本系统springboot dao bean 采用协同过滤算法进行推荐 ,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发)&…...
xss【2】
1.xss钓鱼 钓鱼攻击利用页面,fish.php黑客钓鱼获取到账号密码存储的位置 xss进行键盘记录 2.xss常规防范 3.xss验证payload XSS(跨站攻击)_details/open/ontoggle-CSDN博客...
OpenClaw AI助手公网部署安全加固实战:从SSH防护到成本优化
1. 项目概述:为你的AI助手穿上“防弹衣” 如果你正在一台VPS或云服务器上运行OpenClaw(或者说Clawdbot),并且隐隐觉得“把能执行Shell命令的AI直接暴露在公网上”这事儿有点“刺激”,那你的直觉是对的。这感觉就像把自…...
构建个人技能知识库:从Markdown管理到自动化实践
1. 项目概述:一个技能库的诞生与价值最近在整理个人知识体系时,我一直在思考一个问题:如何将那些零散的、跨领域的“技能点”系统化地管理起来,形成一个可以持续迭代、随时取用的个人工具箱?这不仅仅是写一份简历上的技…...
LaTeX排版避坑指南:为什么你的多图caption编号对不齐?一个案例讲清subfig、minipage和tabular的选择
LaTeX多图排版实战:从编号错乱到完美对齐的解决方案 第一次在学术论文中遇到多图排版问题时,我盯着那个歪歪扭扭的(c)编号看了整整十分钟——它本该和(a)(b)整齐排列,却像迷路的孩子一样缩在角落。更糟的是,当我引用这些子图时&am…...
通过Taotoken实现按Token计费的多模型批量测试脚本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken实现按Token计费的多模型批量测试脚本 基础教程类,针对需要对多个模型进行性能或效果评估的开发者&#x…...
通过API Key管理与审计日志功能加强企业级应用安全
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过API Key管理与审计日志功能加强企业级应用安全 将大模型能力集成到企业级应用,不仅关乎功能实现,更是一…...
OCR实战三阶段:检测、识别、结构化全流程解析
1. 这不是“把图片变文字”那么简单:OCR背后的真实战场光学字符识别(OCR)这三个字母,很多人第一反应是“截图转文字”“PDF复制不了?丢给OCR试试”。但如果你真这么想,就等于站在手术室门口说“不就是动刀子…...
Vivado里配置RFSoC数据转换器IP,这10个参数新手最容易搞错(附PG269避坑指南)
Vivado中RFSoC数据转换器IP配置的10个关键参数解析与实战避坑指南 第一次在Vivado中配置RFSoC的数据转换器IP核时,面对密密麻麻的参数选项,即使是经验丰富的FPGA工程师也可能感到无从下手。RFSoC作为集成了高速数据转换器的异构计算平台,其配…...
【AI智能体】OpenClaw 本地 数字员工 Windows 快速搭建方法
OpenClaw(小龙虾)是一款备受开发者关注的开源本地 AI 智能体,凭借本地运行、零代码操作、自动执行电脑任务等特点快速普及。它不只是对话 AI,更是能够直接操控系统的自动化工具,可根据自然语言指令完成任务拆解、工具调…...
别再复制粘贴了!用LabVIEW 2023实现TCP/IP通讯的保姆级教程(附完整DEMO下载)
LabVIEW 2023 TCP/IP通讯实战:从原理到健壮性设计的深度解析 在工业自动化与测试测量领域,稳定可靠的通讯系统如同设备的神经系统。许多LabVIEW开发者虽然能够通过复制粘贴完成基础通讯功能,却在真实项目中频繁遭遇数据丢失、连接不稳定等&qu…...
无人机、自动驾驶如何搞定GNSS模糊度?快速固定技巧与RTKLib实战
无人机与自动驾驶中的GNSS模糊度快速固定:RTKLib实战指南 在动态环境中实现厘米级定位的关键,往往取决于GNSS信号中整周模糊度的快速准确固定。对于无人机飞控开发者而言,模糊度固定速度直接关系到飞行轨迹的平滑性;自动驾驶工程师…...
