初识C语言——详细入门一(系统性学习day4)
目录
前言
一、C语言简单介绍、特点、基本构成
简单介绍:
特点:
基本构成:
二、认识C语言程序
标准格式:
简单C程序:
三、基本构成分类详细介绍
(1)关键字
(2)数据类型
计算机中常用存储单位
数据类型的取值范围
打印输入类型
(3)常量和变量
常量的分类:
对各种常量代码的演示:
变量的分类:
定义变量的方法如下:
总结
前言
本篇文章将详细地介绍C语言入门基础。
一、C语言简单介绍、特点、基本构成
简单介绍:
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
特点:
(1)简洁的语言
(2)具有结构化的控制语句
(3)丰富的数据类型
(4)丰富的运算符
(5)可对物理地址进行直接操作
(6)代码具有较好的可移植性
(7)可生成高质量、目标代码执行效率高的程序
基本构成:
-
关键字(Keywords):C语言中有一些被固定为特定用途的单词,称为关键字。这些关键字在语法中有特殊含义,不能用作标识符(变量名、函数名等)。例如,int、if、for等都是C语言的关键字。
-
标识符(Identifiers):标识符是由字母、数字和下划线组成的字符序列,用来表示变量、函数、结构体等。标识符需要满足一定的命名规则,如以字母或下划线开头,不能使用关键字作为标识符。
-
数据类型(Data Types):C语言支持多种数据类型,包括基本数据类型和派生数据类型。基本数据类型包括整型(int)、浮点型(float、double)、字符型(char)等,派生数据类型包括数组、结构体、枚举等。
-
变量(Variables):变量是用来存储和表示数据的内存位置,需要在使用之前进行声明。声明变量时需要指定其数据类型和变量名,以便编译器为其分配内存空间。
-
运算符(Operators):C语言提供了丰富的运算符,用来进行各种数学和逻辑运算。常见的运算符包括算术运算符(+、-、*、/等)、关系运算符(<、>、==等)、逻辑运算符(&&、||等)等。
-
控制结构(Control Structures):C语言提供了多种控制结构,用于控制程序的执行流程。常见的控制结构包括条件语句(if-else)、循环语句(for、while、do-while)和跳转语句(break、continue、return等)。
-
函数(Functions):C语言以函数为基本的程序组织单元。函数是一段独立的代码块,用来完成特定的任务。C语言提供了函数库,包含了大量常用的函数,也可以自定义函数来实现特定功能。
-
数组(Arrays):数组是一种存储相同类型数据的连续内存空间。通过下标可以访问数组中的元素。C语言中的数组下标从0开始。
-
指针(Pointers):指针是一种特殊的变量,用来存储其他变量的内存地址。通过指针可以间接访问和修改变量的值,还可以动态分配内存空间。
-
结构体(Structures):结构体是一种自定义的数据类型,可以将不同类型的数据组合在一起,形成一个新的复合类型。结构体的成员可以是不同的数据类型。
二、认识C语言程序
标准格式:
#include <stdio.h> //引入头文件
int main(void) //main函数,程序的入口
{return 0; //结束函数,返回
}
简单C程序:
#include<stdio.h> //引入头文件int main(void) //main 函数是程序的入口,程序从main函数第一行开始执行
{ //一个项目中main(主)函数有且只有一个 printf("hello world!\n");//printf 为输出打印的库函数,库函数的使用必须要包含一个头文件 return 0; //结束函数,返回
}
三、基本构成分类详细介绍
(1)关键字
| 关键字 | 作用 |
|---|---|
| int | 声明整型变量 |
| double | 声明双精度变量 |
| long | 声明长整型变量 |
| char | 声明字符变量 |
| float | 声明浮点型变量 |
| short | 声明短整形变量 |
| signed | 声明有符号类型变量 |
| unsigned | 声明无符号类型变量 |
| struct | 声明结构体变量;结构体所占内存大小是其成员所占内存之和 |
| enum | 声明枚举类型变量 |
| union | 声明联合数据类型变量 |
| static | 声明静态变量;最名不符实的关键字 |
| switch | 用于开关变量 |
| case | 用于语句分支 |
| default | 开关语句中的其他分支 |
| break | 跳出当前循环;表示终止本层循环 |
| continue | 结束当前循环,开始下一轮循环 |
| register | 声明寄存器变量;最快的关键字 |
| const | 声明只读变量,其修饰的只读变量必须在定义的同时初始化 |
| volatile | 说明变量在出现执行中可被隐含地改变 ;最易变的关键字 |
| typedef | 用以给数据类型取名 |
| extern | 声明变量是在其他文件中声明;最会带帽子的关键字 |
| return | 子程序返回语句,用来终止一个函数并返回后面跟着的值 |
| void | 声明函数无返回值或者无参数,声明空类型指针 |
| do | 循环语句的循环体 |
| while | 循环语句的循环条件 |
| for | 一种循环语句 |
| if | 条件语句 |
| else | 条件语句否定分支 |
| goto | 无条件跳转语句 |
| sizeof | 计算对象所占内存空间大小 |
| auto | 声明自动变量,缺省时编译器一般默认为auto;最宽宏大量的关键字 |
(2)数据类型
数据类型大小:
| 单位 | 说明 |
|---|---|
| 位(Bit) | 最小的存储单元,只能存储0或1。 |
| 字节(Byte) | 由8个位组成,是计算机中最基本的存储单位。 |
| 千字节(KB) | 约等于1024字节。 |
| 兆字节(MB) | 约等于1024千字节。 |
| 吉字节(GB) | 约等于1024兆字节。 |
| 特字节(TB) | 约等于1024吉字节。 |
求出他们的数据类型大小,我们需要用到C语言中的一个函数sizeof,这个函数的作用是可以求出⼀个对象(数据类型或者数据对象)的长度(即占⽤内存的⼤⼩,以byte为单位)。注意是以字节为单位。
具体代码如下:
#include <stdio.h>
int main()
{printf("short:%d\n",sizeof(short));printf("unsgned short:%d\n", sizeof(unsigned short));printf("int:%d\n", sizeof(int));printf("unsigned int:%d\n", sizeof(unsigned int));printf("long:%d\n", sizeof(long));printf("unsigned long:%d\n", sizeof(unsigned long));printf("long long:%d\n", sizeof(long long));printf("unsigned long long:%d\n", sizeof(unsigned long long));printf("float:%d\n", sizeof(float));printf("double:%d\n", sizeof(double));printf("char:%d\n", sizeof(char));return 0;
}

由运行结果可知:
char类型的数据类型大小为1字节即8位。
short类型的数据类型大小为2字节即16位。
int类型、float类型的数据类型大小为4字节即32位。
long类型、long long类型、double类型的数据类型大小为8字节即64位。
注意,若整数数据类型前面加unsigned即为无符号整数数据类型,数据类型大小不变。
需要注意的是:long在32位系统中占用4个字节(32位),而在64位系统中占用8个字节(64位)。因此,可以说unsigned long的大小为4字节或8字节,具体取决于编译器和操作系统的规范。
| 数据类型 | 取值范围 |
|---|---|
| char | -128 到 127 |
| unsigned char | 0 到 255 |
| short | -32,768 到 32,767 |
| unsigned short | 0 到 65,535 |
| int | -2,147,483,648 到 2,147,483,647 |
| unsigned int | 0 到 4,294,967,295 |
| long | -2,147,483,648 到 2,147,483,647 |
| unsigned long | 0 到 4,294,967,295 |
| long long | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
| unsigned long long | 0 到 18,446,744,073,709,551,615 |
| float | 精度约为6到7十进制位 |
| double | 精度约为15位十进制数 |
| 数据类型 | 打印类型 |
|---|---|
| short | %hd |
| int | %d |
| long | %ld |
| long long | %lld |
| float | %f |
| doule | %lf |
| char | %c |
(3)常量和变量
常量:
常量是指在程序中固定不变的数值或字符,它们的值在程序运行过程中不能更改。常量可以分为字面常量和符号常量。
常量的分类:
-
字面常量:字面常量是指直接写在代码中的常量值。例如,整数常量10、浮点数常量3.14、字符常量'a'等都是字面常量。
-
符号常量:符号常量是使用
#define或const关键字定义的常量。它们在程序中表示一个固定的数值或字符串,并且可以在程序中多次使用。 -
枚举常量:是指一组具有相同特性的常量集合,在C语言中通过使用
enum关键字进行定义。枚举常量可以用于定义一组相关的常量,使程序更加清晰和易读。每个枚举常量都有一个唯一的名称和与之对应的值,默认情况下从0开始递增。我们可以自定义枚举常量的值或顺序。
对各种常量代码的演示:
int main()
{120;//字面常量10;//字面常量//const 修饰常变量const int num = 10;//num是const修饰的常变量//num的值不可被改变,但本质还是一个变量//#define的标识符常量 #define MIN 100printf(" = %d\n", MIN);//枚举常量printf("%d\n", MALE);printf("%d\n", FEMALE);return 0;}
变量:
变量是在程序执行过程中可以改变其值的一种标识符。变量可以用来存储和表示不同类型的数据,包括整数、浮点数、字符、布尔值等。变量在使用前需要先声明,并且可以通过赋值语句来改变其值。在C语言中,变量的声明需要指定变量的类型和名称。
变量的分类:
分为局部变量和全局变量。
它们的区别:
局部变量的作用域是变量所在的局部范围,它的生命周期是进入作用域生命周期开始,出作用域生命周期结束。
全局变量的作用域是整个工程,它的生命周期是整个程序的生命周期。
定义变量的方法如下:
int x; // 声明一个整数类型的变量x
float pi = 3.14; // 声明并初始化一个浮点数类型的变量pi
char ch = 'A'; // 声明并初始化一个字符类型的变量ch
变量的命名需要符合一定的规则,包括以字母或下划线开头、由字母、数字和下划线组成等。
变量和常量在程序中都具有一定的作用,常量用于表示固定的数值或字符串,而变量用于存储和处理数据。在程序设计中,常量和变量的使用是非常重要的基础概念。
总结
本篇文章详细地讲了C语言的详细入门基础知识,希望能够帮到大家!
以后还会给大家展现更多关于C语言的其他重要的基础知识,感谢大家支持懒大王!
希望这篇博客能给各位朋友们带来帮助,最后懒大王请来过的朋友们留下你们宝贵的三连以及关注,感谢你们!
相关文章:
初识C语言——详细入门一(系统性学习day4)
目录 前言 一、C语言简单介绍、特点、基本构成 简单介绍: 特点: 基本构成: 二、认识C语言程序 标准格式: 简单C程序: 三、基本构成分类详细介绍 (1)关键字 (2…...
python 学习笔记(6)—— Flask 、MySql
目录 Flask 1、起步 2、渲染项目的首页 3、处理无参数的 GET 请求 4、处理有 query 参数的 GET 请求 6、处理 params 参数的 get 请求 6、处理 application/json 类型请求体的 POST 请求 7、根据参数渲染模板页面 8、上传文件 数据库操作(mysql࿰…...
Deepin下vsftp服务安装配置虚拟用户
1. 系统环境 Deepin20.9 2. 在线安装 # apt install -y vsftp //安装ftp服务软件 # apt install -y db-util //安装虚拟用户密码库处理软件 3. 离线安装 3.1 下载依赖包 # apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --n…...
OpenpyxlWriter‘ object has no attribute ‘save‘
问题 将实验结果保存为EXCEL,报错“OpenpyxlWriter‘ object has no attribute ‘save‘” data_df pd.DataFrame(Experiment_result) #关键1,将ndarray格式转换为DataFrame writer pd.ExcelWriter(./results/ args.model_num _args.data_name …...
ES6(三)
文章目录 Promise概念作用回调地狱Promise使用对象的状态Promise.allPromise.race Generator 函数概念基本语法异步流程 Class语法类的写法getter与setter静态属性和静态方法继承模块化 Promise 概念 Promise 是异步编程的一种解决方案,比传统的解决方案回调函数,…...
Android 数据库封装(SQLite)
Android 数据库操作(SQLite) Android 数据库操作(SQLite)动态预览使用初始化生成表实体类插入数据批量插入删除数据删除全部修改数据查找(列表)查找(单条)条件查找(列表&…...
Git从入门到起飞(详细)
Git从入门到起飞 Git从入门到起飞什么是Git?使用git前提(注册git)下载Git在Windows上安装Git在macOS上安装Git在Linux上安装Git 配置Git配置全局用户信息配置文本编辑器 创建第一个Git仓库初始化仓库拉取代码添加文件到仓库提交更改推送 Git基本操作查看提交历史比较…...
R读写parquet文件
什么是parquet文件 Apache Parquet是一个开源的,列存储的数据文件格式。 https://parquet.apache.org/ 在R里面,我们可以通过arrow包来读写它。 我们先安装一下arrow包,并加载它。 install.packages("arrow") library(arrow)读写…...
Java21 LTS版本
一、前言 除了众所周知的 JEP 之外,Java 21 还有更多内容。首先请确认 java 版本: $ java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment (build 2135-2513) OpenJDK 64-Bit Server VM (build 2135-2513, mixed mo…...
【性能优化】虚拟懒加载(下拉滚动加载长列表)element-puls+el-table
目录 前言一、卡顿的原因?二、解决1、滚动懒加载2.官方 总结 前言 提示:这里可以添加本文要记录的大概内容: 在element-plus中,如果数据超过1k,就会感觉到明显的卡顿,应该是渲染的卡顿吧。反正我在请求回…...
一对多映射处理
8.3.1 、collection /** * 根据部门id查新部门以及部门中的员工信息 * param did * return */ Dept getDeptEmpByDid(Param("did") int did);<resultMap id"deptEmpMap" type"Dept"> <id property"did" column"did&quo…...
关于IDEA没有显示日志输出?IDEA控制台没有显示Tomcat Localhost Log和Catalina Log 怎么办?
问题描述: 原因是;CATALINA_BASE里面没有相关的文件配置。而之前学习IDEA的时候,把这个文件的位置改变了。导致,最后输出IDEA的时候,不会把日志也打印出来。 检查IDEA配置; D:\work_soft\tomcat_user\Tomcat10.0\bin 在此目录下&…...
蛇形填数 rust解法
蛇形填数。 在nn方阵里填入1,2,…,nn,要求填成蛇形。例如,n=4时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 解法如下: use std::io;fn main() {let mut buf String::new();…...
一文探索SD-WAN技术进阶后与MPLS的区别
在网络通信领域,随着云计算和大数据等新兴技术的快速发展,企业对于网络的可靠性、安全性以及带宽的需求越来越高。 SD-WAN(软件定义广域网)和MPLS(多协议标签交换)是两种不同的网络连接技术,它们…...
RocketMq(四)消息分类
一、普通消息 1、同步发送消息:指的是Producer发出⼀条消息后,会在收到MQ返回的ACK之后才发下⼀条消息。该方式的消息可靠性最高,但消息发送效率低。 二、顺序消息 三、延时消息...
ip地址怎么改网速快
在当今高度依赖互联网的时代,快速稳定的网络连接对于人们的生活和工作至关重要。然而,有时我们可能会遇到网络速度缓慢的问题。虽然更改IP地址并不能直接影响网络速度,但它可以成为改善网络连接的一种策略之一。虎观代理小二二将探讨如何通过…...
植物大战僵尸各种僵尸攻略(四)
前言 此文章为“植物大战僵尸”专栏中的011刊(2023年9月第十刊),欢迎订阅。版权所有。 注意: 1.本博客适用于pvz无名版; 2.pvz指植物大战僵尸(Plants VS Zonbies); 3.本文以耗费低做标准&am…...
main函数中两个参数的作用
一般我们在使用C语言时不太用到main函数自带的参数,因此最常见的main函数就像下面这样。 int main() {...... }上面这种main函数是省略了其形参的,C语言中规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv,其中&…...
华为OD机试 - 连续字母长度 - 字符串(Java 2023 B卷 100分)
目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明4、再输入5、输出6、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(…...
想要精通算法和SQL的成长之路 - 填充书架
想要精通算法和SQL的成长之路 - 填充书架 前言一. 填充书架1.1 优化 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 填充书架 原题链接 题目中有一个值得注意的点就是: 需要按照书本顺序摆放。每一层当中,只要厚度不够了,当前层最高…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
