初识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的成长之路 - 系列导航 一. 填充书架 原题链接 题目中有一个值得注意的点就是: 需要按照书本顺序摆放。每一层当中,只要厚度不够了,当前层最高…...
【ROS入门】ROS的核心概念
文章结构 通信机制节点(Node)——执行单元节点管理器(ROS Master)——控制中心话题通信——异步通信机制话题(Topic)消息(Message)——话题数据 服务通信——同步通信机制服务(Service) 话题和服务的区别参数(Parameter)——全局共享字典 文件系统功能包(Package&am…...
Python爬虫从端到端抓取网页
网页抓取和 REST API 简介 网页抓取是使用计算机程序以自动方式从网站提取和解析数据的过程。这是创建用于研究和学习的数据集的有用技术。虽然网页抓取通常涉及解析和处理 HTML 文档,但某些平台还提供 REST API 来以机器可读格式(如 JSON)检…...
这10款类似Stable Diffusion的ai绘图软件,你了解多少?
Stable Diffusion这款ai软件有哪些可以替代的软件?好用的类似Stable Diffusion的ai软件推荐,那么今天就跟着赞奇云工作站小编一起来看看吧。 什么是Stable Diffusion? 称为“Stable Diffusion”的文本到图像模型可以将任何文本转换为逼真、…...
部署ik分词器
部署ik分词器 案例版本:elasticsearch-analysis-ik-8.6.2 ES默认自带的分词器对中文处理不够友好,创建倒排索引时可能达不到我们想要的结果,然而IK分词器能够很好的支持中文分词 因为是集群部署,所以每台服务器中的ES都需…...
基于STM32+华为云IOT设计的智能垃圾桶
一、项目介绍 在商业街、小吃街和景区等人流密集的场所,垃圾桶的及时清理对于提供良好的游客体验至关重要。然而,传统的垃圾桶清理方式通常是定时或定期进行,无法根据实际情况进行及时响应,导致垃圾桶溢满,影响环境卫…...
板子接线图
1.ST-LINK V2接线 2.对抗板子刷蓝牙固件 接USB转TTL,用镊子短接两个孔 2.对抗板子用串口测试蓝牙AT命令 短接白色箭头,接TX,RX,电源...
Python练习之选择与循环
目录 1、编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。提示:如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。2、编写程序,用户从键盘输入小于 1000 的整数&#x…...
MySQL5.7开启通用日志功能
起因: 因项目数据库占用异常,查询数据库有哪些IP地址连接使用(Windows环境下)。 操作步骤: 1、修改MySQL服务的my.ini 文件 # 开启通用查询日志 general_log 1 log_output …...
WPF控件模板
在过去,Windows开发人员必须在方便性和灵活性之间做出选择。为得到最大的方便性,他们可以使用预先构建好的控件。这些控件可以工作的足够好,但可定制性十分有限,并且几乎总是具有固定的可视化外观。偶尔,某些控件提供了…...
vue移动端页面适配
页面的适配,就是一个页面能在PC端正常访问,同时也可以在移动端正正常访问。 现在我们可以通过弹性布局【Flexible布局】、媒体查询和响应式布局。除此之外,还可以通过rem和vw针对性地解决页面适配问题。 响应式布局 响应式布局的核心&…...
如何用网站做推广/希爱力双效片用后感受
1、String的本质 线程安全 打开String的源码,类注释中有这么一段话“Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings.Because String objects are immutable they can be shared.”。这…...
教人做辐射4mod的网站/网络广告公司
linux接口绑定How to configure interface bonding to bound to 2 eth interfaces together in Linux, specifically CentOS/RHEL?如何在Linux (特别是CentOS / RHEL)中配置将接口绑定在一起绑定到2个eth接口? This tutorial Configuring I…...
内链wordpress/百度手机助手最新版下载
http://news.cnblogs.com/n/37759/转载于:https://www.cnblogs.com/kexb/p/3792412.html...
网站开发是什么部门/如何搭建企业网站
在使用SVN过程中可能有时因为一些原因,不想再使用SVN了,我们想取消与SVN的关联,让Android项目恢复到原始状态,不想有哪些花花绿绿的颜色了,怎么办呢,操作起来很简单 把Android Studio切换到Project模式,有个.idea文件夹,在该文件夹下找到vcs.xml文件,打开该文件,把里面的内容替…...
做app模板下载网站/seo查询百科
定义和用法 <audio> 标签定义声音,比如音乐或其他音频流。 示例代码:<audio src"someaudio.wav">您的浏览器不支持 audio 标签。</audio> 提示和注释 提示:可以在开始标签和结束标签之间放置文本内容,这样老的浏…...
做网站的专业叫啥/关键词优化seo排名
一、约束条件约束类型关键字默认约束default 值非空约束not null唯一约束unique key自增长约束auto_increment主键约束primary key外键约束foreign key1.1 默认约束(default 默认值)初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予…...