初识C语言——详细入门(系统性学习day4)

news2024/10/7 12:26:02

目录

前言

一、C语言简单介绍、特点、基本构成

简单介绍:

特点:

基本构成:

二、认识C语言程序

标准格式:

简单C程序:

三、基本构成分类详细介绍   

(1)关键字

(2)数据类型

计算机中常用存储单位

数据类型的取值范围

打印输入类型

(3)常量和变量

常量的分类:

对各种常量代码的演示:

变量的分类:

定义变量的方法如下:

总结


前言

   本篇文章将详细地介绍C语言入门基础。


一、C语言简单介绍、特点、基本构成

简单介绍:

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

特点:

(1)简洁的语言

(2)具有结构化的控制语句

(3)丰富的数据类型

(4)丰富的运算符

(5)可对物理地址进行直接操作

(6)代码具有较好的可移植性

(7)可生成高质量、目标代码执行效率高的程序

基本构成:

  1. 关键字(Keywords):C语言中有一些被固定为特定用途的单词,称为关键字。这些关键字在语法中有特殊含义,不能用作标识符(变量名、函数名等)。例如,int、if、for等都是C语言的关键字。  

  2. 标识符(Identifiers):标识符是由字母、数字和下划线组成的字符序列,用来表示变量、函数、结构体等。标识符需要满足一定的命名规则,如以字母或下划线开头,不能使用关键字作为标识符。

  3. 数据类型(Data Types):C语言支持多种数据类型,包括基本数据类型和派生数据类型。基本数据类型包括整型(int)、浮点型(float、double)、字符型(char)等,派生数据类型包括数组、结构体、枚举等。

  4. 变量(Variables):变量是用来存储和表示数据的内存位置,需要在使用之前进行声明。声明变量时需要指定其数据类型和变量名,以便编译器为其分配内存空间。

  5. 运算符(Operators):C语言提供了丰富的运算符,用来进行各种数学和逻辑运算。常见的运算符包括算术运算符(+、-、*、/等)、关系运算符(<、>、==等)、逻辑运算符(&&、||等)等。

  6. 控制结构(Control Structures):C语言提供了多种控制结构,用于控制程序的执行流程。常见的控制结构包括条件语句(if-else)、循环语句(for、while、do-while)和跳转语句(break、continue、return等)。

  7. 函数(Functions):C语言以函数为基本的程序组织单元。函数是一段独立的代码块,用来完成特定的任务。C语言提供了函数库,包含了大量常用的函数,也可以自定义函数来实现特定功能。

  8. 数组(Arrays):数组是一种存储相同类型数据的连续内存空间。通过下标可以访问数组中的元素。C语言中的数组下标从0开始。

  9. 指针(Pointers):指针是一种特殊的变量,用来存储其他变量的内存地址。通过指针可以间接访问和修改变量的值,还可以动态分配内存空间。

  10. 结构体(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 char0 到 255
short-32,768 到 32,767
unsigned short0 到 65,535
int-2,147,483,648 到 2,147,483,647
unsigned int0 到 4,294,967,295
long-2,147,483,648 到 2,147,483,647
unsigned long0 到 4,294,967,295
long long-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long long0 到 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)常量和变量

常量:

常量是指在程序中固定不变的数值或字符,它们的值在程序运行过程中不能更改。常量可以分为字面常量和符号常量。

常量的分类:

  1. 字面常量:字面常量是指直接写在代码中的常量值。例如,整数常量10、浮点数常量3.14、字符常量'a'等都是字面常量。

  2. 符号常量:符号常量是使用#defineconst关键字定义的常量。它们在程序中表示一个固定的数值或字符串,并且可以在程序中多次使用。

  3. 枚举常量:是指一组具有相同特性的常量集合,在C语言中通过使用enum关键字进行定义。枚举常量可以用于定义一组相关的常量,使程序更加清晰和易读。每个枚举常量都有一个唯一的名称和与之对应的值,默认情况下从0开始递增。我们可以自定义枚举常量的值或顺序。

对各种常量代码的演示:

int main()
{
	120;//字面常量
	10;//字面常量
 
	//const 修饰常变量
	const int num = 10;//num是const修饰的常变量
	//num的值不可被改变,但本质还是一个变量
 
	//#define的标识符常量 
    #define MIN 100
	printf(" = %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语言的其他重要的基础知识,感谢大家支持懒大王!

      希望这篇博客能给各位朋友们带来帮助,最后懒大王请来过的朋友们留下你们宝贵的三连以及关注,感谢你们!
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1039736.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据通信——应用层(域名系统)

引言 TCP到此就告一段落&#xff0c;这也意味着传输层结束了&#xff0c;紧随其后的就是TCP/IP五层架构的应用层。操作系统、编程语言、用户的可视化界面等等都要通过应用层来体现。应用层和我们息息相关&#xff0c;我们使用电子设备娱乐或办公时&#xff0c;接触到的就是应用…

命令执行(rce)

1.命令与代码执行原理 命令执行原理 参数给变量未经过滤&#xff0c;直接使用了不安全的函数处理了变量 127.0.0.1&&ipconfig 有漏洞 常用的函数 assert,system,exec,shell_exec, eval,(反单引号&#xff09; 代码执行原理 参数给变量未经过滤&#xff…

Windows如何将软件安装在移动硬盘上?

为什么要在Windows的移动硬盘上安装软件&#xff1f; 现在一些软件需要占用的硬盘空间越来越多&#xff0c;我们下载的软件也越来越多&#xff0c;硬盘的可用存储空间自然的也就越来越小了。当您在下载新软件时&#xff0c;就会提示您磁盘空间不足&#xff0c;但又不能删除之…

AIGC专栏7——EasyPhoto 人像训练与生成原理详解

AIGC专栏7——EasyPhoto 人像训练与生成原理详解 学习前言源码下载地址为什么是LoraEasyPhoto的训练流程1、数据的预处理a、人像排序i、人脸特征向量提取过程ii、人脸偏移角度计算iii、人像排序 b、人像分割与修复i、人像分割ii、图像修复与超分处理 2、Lora模型训练a、训练的基…

PyTorch实战:常用卷积神经网络搭建结构速览

目录 前言 常用卷积神经网络 1.AlexNet 2.VGGNet 3.GoogLeNet 4.ResNet 总览 前言 PyTorch可以说是三大主流框架中最适合初学者学习的了&#xff0c;相较于其他主流框架&#xff0c;PyTorch的简单易用性使其成为初学者们的首选。这样我想要强调的一点是&#xff0c;框架…

收藏!一个详细完整的公司局域网搭建案例

你们好&#xff0c;我的网工朋友。 什么是局域网&#xff1f; 所谓局域网(Local Area Network&#xff0c;简称LAN)&#xff0c;就是用于将有限范围内&#xff08;例如一个实验室、一层办公楼或者校园&#xff09;的各种计算机、终端与外部设备互联成网。 那公司局域网怎么建…

ScrollView如何裁剪粒子特效

1&#xff09;ScrollView如何裁剪粒子特效 2&#xff09;Unreal在移动设备中无法使用Stat命令获取到GPU Thread的耗时 3&#xff09;Unity中如何看到相机视野范围内的剔除结果 这是第354篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&#xff0c;涵盖了UWA问答、…

Spring Cloud Alibaba Gateway 简单使用

文章目录 Spring Cloud Alibaba Gateway1.Gateway简介2. 流量网关和服务网关的区别3. Spring Cloud Gateway 网关的搭建3.1 Spring Cloud Gateway 配置项的说明3.2 依赖导入3.3 配置文件 Spring Cloud Alibaba Gateway 1.Gateway简介 Spring Cloud Gateway是一个基于Spring F…

图片分割处理(以玉米颗粒的图片分割为例)

问题&#xff1a; 为完成玉米颗粒分类任务&#xff0c;现需要处理训练图片&#xff0c;将以下图片中的玉米颗粒进行分割&#xff1a; 目标&#xff1a; 操作步骤&#xff08;完整代码附在最后&#xff0c;该部分为解释说明&#xff09; 一、提取通道并进行二值化 # 提取蓝…

CCC数字钥匙设计【BLE】 --建立安全测距

1、建立安全测距Establish Secure Ranging 车端总共有三种建立安全测距的方式&#xff0c;具体如下&#xff1a; 1) Optimal Flow 2) Sub-Optimal Flow 3) Ranging Recovery Flow 为了确定建立安全测距需要执行哪条流程&#xff0c;车辆需要进行以下流程选择。当车辆和设备…

速码!!BGP最全学习笔记:BGP路径属性与选路原则

BGP路径属性 1、路径属性分类 公认属性&#xff1a;所有BGP路由器都必须能够识别的属性 公认必遵&#xff08;Well-known Mandatory&#xff09;&#xff1a;必须包括在每个Update消息里。公认任意&#xff08;Well-known Discretionary&#xff09;&#xff1a;可能包括在某…

数学公式测试

MVP变换 MVP变换用来描述视图变换的任务&#xff0c;即将虚拟世界中的三维物体映射&#xff08;变换&#xff09;到二维坐标中。 MVP变换分为三步&#xff1a; 模型变换(model tranformation)&#xff1a;将模型空间转换到世界空间&#xff08;找个好的地方&#xff0c;把所…

4年北漂之路,从软件测试外包到外企的一点小心得

4年前&#xff0c;我独自一人拖着行李箱来到了北京&#xff0c;成为了一名北漂&#xff0c;离开了校园的庇护&#xff0c;只身一人想要在这片陌生的地方闯出一番名堂&#xff0c;可最后却不得人意&#xff0c;面临着和所有北漂群体的共同困局&#xff0c;没有任何归属感&#x…

【Python Fastapi】js上传文件,fastapi处理,js显示回传信息

python from fastapi import FastAPI, File, UploadFile, HTTPException from fastapi.staticfiles import StaticFiles from fastapi.responses import HTMLResponse from typing import List import requestsapp FastAPI()# 配置静态文件目录 app.mount("/static"…

C++程序员,想入坑音视频方向,需要掌握那些技能树?

C程序员&#xff0c;想入坑音视频方向&#xff0c;需要掌握那些技能树? “音视频”方向太笼统了。 最核心的技术包括编码理论&#xff0c;从基础开始就是信号处理&#xff0c;傅里叶变换&#xff0c;DCT, 采样量化插值等等。这些和C没啥关系&#xff0c;就是一套数学理论。 …

工作薄代码之将活动工作表复制到新工作簿等

【分享成果&#xff0c;随喜正能量】得失&#xff0c;可以说是人类事业上的考验&#xff0c;不要因一时的得失影响一生的期许。得失是一时的&#xff0c;理想是一生的。。 我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xf…

基于SpringBoot的企业客户管理系统

目录 前言 一、技术栈 二、系统功能介绍 管理员功能模块 员工功能模块 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c…

JVM堆内存转储

堆转储是 JVM 中特定时刻内存中的所有对象的快照。它们对于解决内存泄漏问题并优化 Java 应用程序中的内存使用情况非常有用。 堆转储通常以二进制格式 hprof 文件存储。我们可以使用 jhat 或 JVisualVM 等工具打开和分析这些文件。 下面介绍两种堆转储的方式&#xff1a; 1…

HTTP 请求轻松搞定:Swift 网络编程的不二之选 | 开源日报 No.38

Alamofire/Alamofire Stars: 39.8k License: MIT Alamofire 是一个用 Swift 编写的 HTTP 网络库。 简洁的语法和强大的功能集&#xff0c;让你仅需几行代码就能实现诸如自动重试等强大特性。支持链式请求/响应方法&#xff0c;使得处理网络请求变得如丝般顺滑。完美兼容 Swif…

前端性能测试工具-lighthouse

Lighthouse简介 Lighthouse 是 Google 的一款开源工具&#xff0c;它可以作为一个 Chrome 扩展程序运行&#xff0c;或从命令行运行。只需要给 Lighthouse 提供一个要审查的网址&#xff0c;它将针对此页面运行一连串的测试&#xff0c;然后生成一个页面性能的报告。 Lightho…