【C语言复习】第七篇、关于C语言关键字的知识

news2024/7/4 14:51:07

目录

第一部分、常见关键字

1、数据类型关键字

2、流程控制类关键字

第二部分、常用的关键字

1、typedef(类型重定义/类型重命名)

 2、static(易混淆const)

2.1、static修饰局部变量

 2.2、static修饰全局变量

 2.3、static修饰函数

第三部分、关于预处理指令的使用

1、#define定义常量

2、防止头文件被重复包含   

3、定义有参宏   

第四部分、友情链接


第一部分、常见关键字

        下表格中被颜色标记的,我个人认为是比较重要的,需要记住的。

        注意:include、define不是关键字,是预处理指令

1、数据类型关键字

        

基本数据类型

void:声明函数无返回值或参数,声明无类型指针,显式丢弃运算结果。

char:字符型数据类型
int:   整型数据类型

float:单精度浮点型数据(属于浮点数据的一种,小数点后保留6位)

double:双精度浮点型数据(属于浮点数据的一种,比 float 类型的精度高,小数点后保留15/16位)

类型修饰关键字

short:修饰 int,短整型数据,可省略被修饰的 int

long:  修饰 int,长整型数据,可省略被修饰的 int

signed:修饰整型数据,有符号数据类型

unsigned:修饰整型数据,无符号数据类型

复杂类型关键字

struct:结构体声明

union:共用体声明

enum:枚举声明

typedef:声明类型别名

sizeof:得到特定类型或特定类型变量所占字节的大小

存储级别关键字

auto:  指定为自动变量,由编译器自动分配及释放(通常在栈上分配)。

static:指定为静态变量,分配在静态变量区。修饰函数时,指定函数作用域为文件内部。

register:指定为寄存器变量,建议编译器将变量存储到寄存器中;也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。

extern:  指定对应变量为外部变量,即在另外的目标文件中的定义,可以认为是约定由另外文件声明的。

const:  指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)。

volatile:指定变量的值有可能会被系统或其他线程/进程改变,强制编译器每次从内存中取得该变量的值。

2、流程控制类关键字

跳转结构

return:用在函数体中,返回特定值(或是 void 值,即不返回值)

continue:结束当前循环,开始下一轮循环

break:跳出当前循环或 Switch 结构

goto:无条件跳转语句,常用在多层循环嵌套 

分支结构

if条件语句

else条件语句否定分支(与 if 连用)

switch开关语句(多重分支语句)

case:   开关语句中的分支标记

default开关语句中的 “ 其他 ” 分支(可选)

循环结构

forfor循环结构 。

dodo循环结构 do while() ; 

whilewhile循环结构 while()  ; 

第二部分、常用的关键字

1、typedef(类型重定义/类型重命名)

 2、static(易混淆const)

        首先要明白被const修饰的变量会变成常变量,该变量的值便不可以改变。参考博客:C语言中常量的知识。

        接着再来了解一下static,static可以用来修饰局部变量、修饰全局变量、修饰函数。

2.1、static修饰局部变量

        作用:使局部变量的效果和全局变量的效果等价(不管几个括号)。

示例1、没有用static修饰的局部变量

示例2、用static修饰的局部变量后的效果 

为什么会导致这种结果呢?????

         因为static修饰局部变量,改变了局部变量的生命周期,本质上是改变变量的存储类型。

        内存一般指计算机的RAM随机存储器,而计算机的内存一般分为栈区、堆区、静态区。

        栈区:主要用来存放局部变量,函数参数等相关临时变量。

        堆区:主要用来动态内存分配。

        静态区:主要用来存放全局变量,以及static修饰的局部变量。

 2.2、static修饰全局变量

        作用:使全局变量只能在当前源文件(.c文件)使用,不能借助extern在其它源文件(.c文件)使用。

Why???为啥就不行了呢?

        本质上原因:全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了!

        作用:解决不同源文件中全局变量名称重复的问题。

 2.3、static修饰函数

        作用:使得函数只能在当前源文件(.c文件)使用,不能借助extern在其它源文件(.c文件)使用。

Why???为啥就不行了呢?

        本质上原因:函数,在其他源文件内部可以被使用,是因为函数具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的函数了!

        作用:解决不同源文件函数名一致的问题。

 第三部分、关于预处理指令的使用

        前面也说到了include、define不是关键字,是预处理指令

        关于include的使用,比较简单,用来调用头文件。关于define的详细用法如下:

     注意:利用define去进行宏定义的时候,不需要在后面加分号,加分号是错误的!!!

1、#define定义常量

#define MAX 25
#define MIN 0

2、防止头文件被重复包含   

#ifndef _LED_H_
#define _LED_H_
//头文件内容
//.......
//.......
#endif

3、定义有参宏   

#define ADD(X,Y) X+Y
#define SUB(X,Y) X-Y

第四部分、友情链接

        希望我的笔记对你有帮助,有需要的小伙伴可以查看本专栏更多的往期文章🤪🤪🤪

        专栏链接: C语言的拾穗之旅_大屁桃的博客-CSDN博客

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

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

相关文章

9.创建provider实例

创建provider网络 controller节点 创建一个provider 网络,网络类型为 external 对于 provider 网络来说,实例通过 2 层(桥接网络)连接到提供商网 络。 参数说明: --share: 允许所有项目都可以使用该网络…

深度学习-【图像分类】学习笔记8 ShuffleNet

文章目录 8.1 ShuffleNet v1 v2理论讲解ShuffleNet v1ShuffleNet v2 8.2 使用Pytorch搭建ShuffleNet 8.1 ShuffleNet v1 v2理论讲解 ShuffleNet v1 论文链接:https://readpaper.com/paper/2963125010 Channel shuffle 相关链接:深度学习-【图像分类】…

车载以太网 - 传输层 - TCP/IP

目录 一、传输层基础介绍 传输层主要包括两种协议 传输层端口号 二、UDP通信 UDP协议介绍 UDP 通信特点: UDP Segment结构 UDP通信过程 三、TCP通信 TCP通信特点: TCP Segment结构 一、传输层基础介绍 传输层的寻址方式:端口号 包括传输层的寻址方式&…

几个SQL的高级写法

一、ORDER BY FLELD() 自定义排序逻辑 MySql 中的排序 ORDER BY 除了可以用 ASC 和 DESC,还可以通过 ORDER BY FIELD(str,str1,...) 自定义字符串/数字来实现排序。这里用 order_diy 表举例,结构以及表数据展示: ORDER BY FIELD(str,str1,..…

chatgpt赋能python:Python支持跨平台软件开发

Python支持跨平台软件开发 作为一种高级编程语言,Python 以其丰富的库和跨平台支持而备受开发人员欢迎。Python 通过将应用程序的可移植性最大化,使得开发人员可以轻松地在不同的操作系统平台上构建和部署软件。 跨平台支持 Python 支持各种不同的操作…

三子棋都玩过吧,那C语言现造一个呢???

目录 前言 三子棋简介 棋盘介绍 规则介绍 程序设计 基本流程 游戏逻辑 菜单界面打印 创建棋盘并初始化 打印棋盘 玩家落子 电脑落子 判断胜负 1.判定是否和棋 2.判定胜负 代码总汇 ✅Game.h 头文件 ✅Game.c ✅Test.c 前言 🥰想必各位大佬们上学的…

编译安装以及升级Nginx

目录 一、前言 1、简介 2、 Nginx模块 3、与Apache的差异 4、优点 二、编译安装 1、关闭防火墙 2、安装依赖包 3、创建运行用户与组 4、编译安装 5、检测配置文件是否正确 6、添加系统服务 三、版本升级 四、总结 一、前言 1、简介 Nginx是一个高性能的HTTP和反…

chatgpt赋能python:Python散点图连线——一种美妙的可视化方法

Python散点图连线——一种美妙的可视化方法 散点图连线是一种常用的可视化方法,可以展示不同维度之间的关系和趋势。在Python中,我们可以使用多种库来绘制散点图连线,例如matplotlib、seaborn和plotly等。本文将介绍如何使用matplotlib和plo…

数学公式库mathjs 安装使用教程

Math.js 是个JavaScript 和 Node.js 的扩展数学库。它包括了灵活的表达式解析器,提供数字,大数值,复杂数值,单位,矩阵等等集成的解决方案。Math.js 很强大又易于使用。 特性 支持数值,大数值&#xff0c…

医疗IT绝缘监测应用

近年来,随着医疗技术的迅猛发展,电子电气相关医疗设备在医院中的应用越来越广泛,各类疾病治疗也越来越依赖医疗电气设备 。人们对医院医疗环境提出更高要求,传统的建筑、电气等设计已难以充分保障其人身安全。患者及医务人员已深陷…

每日学术速递6.10

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Unifying (Machine) Vision via Counterfactual World Modeling 标题:通过反事实世界建模统一(机器)视觉 作者:Daniel M. Bear, K…

LFS11.3在VMware安装后需要做的准备

参考lfs 11.3和Blfs 11.3 先简单罗列一下要做的步骤,后续有机会再补充一下细节,遇到问题欢迎读者留言。 1、配置vmware中的网络连接 使用vmware net8 net模式,选用VMnet 配置网络连接/etc/sysconfig/ 目录下ifconfig.*** (***为…

RK3588平台开发系列讲解(AI 篇)什么是RKNPU

文章目录 一、RKNPU的发展历史二、RKNPU单核架构三、RKNPU性能计算四、RKNPU应用场景沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解什么是RKNPU。 一、RKNPU的发展历史 二、RKNPU单核架构 三、RKNPU性能计算 NPU算力是指每秒可以处理的运算次数,通常…

基于Hata模型的BPSK调制信号小区覆盖模拟matlab完整程序分享

基于Hata信道模型的BPSK调制信号小区覆盖模拟matlab仿真,对比VoIP, Live Video,FTP/Email 完整程序: clc; clear; close all; warning off; addpath(genpath(pwd)); % Random bits are generated here. bits = randi([0, 1], [50,1]); M = 2; t = 1:1:50; trans = pskmod(bi…

支持硬件加速的opencv编译

背景 为了降低cpu的使用率提升系统的接入能力,需要将编解码模块移至GPU处理,opencv默认的发行版中不支持GPU加速,所以需要重新编译opencv使其支持GPU硬件加速。 读者 本文的读者须具备一定的Linux使用经验,如常规软件安装等操作…

扫雷小游戏【C语言】

目录 前言 一、基本实现逻辑 二、实现步骤 1. 我们希望在进入游戏时有一个菜单让我们选择 2. 我们希望可以重复的玩(一把玩完了还可以接着玩) 3. 采用多文件形式编程 4.要扫雷先得有棋盘(创建棋盘R*N) 5.初始化棋盘 6.打…

0014-TIPS-pawnyable : Double-Fetch pt_regs

原文 Linux Kernel PWN | 040302 Pawnyable之双取 Double Fetch 题目下载 漏洞代码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/cdev.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/sl…

chatgpt赋能python:Python搜索本地文件指南

Python搜索本地文件指南 在进行开发或者日常使用中&#xff0c;需要对本地的文件进行搜索操作是常见的需求。如果你正在学习Python编程&#xff0c;接下来的内容会为你提供一些如何使用Python进行本地文件搜索的指南。 搜索文件 在Python中搜索本地文件可以使用os模块。该模…

杂记 | 使用FRP搭建内网穿透服务

文章目录 01 需求场景02 项目地址03 文件介绍04 编写配置文件4.1 编写frps.ini4.2 编写frpc.ini 05 测试 01 需求场景 1、有一台云服务器&#xff0c;Linux&#xff08;CentOS7&#xff09;系统 2、云服务器有公网ip&#xff0c;公网可以访问 3、本地电脑是家用笔记本&#xf…

AN10833-MIFARE type identification procedure.pdf

1.2范围 本文档描述了如何区分MIFARE接口卡IC系列的成员。ISO/IEC 14443-3描述了类型A的初始化和防冲突程序&#xff0c;该程序为所有MIFARE卡提供卡类型信息。 MIFARE卡与ISO/IEC 14443-3兼容。因此&#xff0c;已经存在的应用可以很容易地扩展到分别使用较新的MIFARE芯片和所…