news 2026/4/30 13:02:35

C 语言基础之C语言的常见关键字

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C 语言基础之C语言的常见关键字

首先我们简单的和这些关键字见见面(被高亮的关键字是今天要介绍的)

这其中有大家熟知的数据类型:intcharfloatdouble

也有控制语句用到的:iffordo

还有一些就是今天主要介绍的关键字。

至于还有一些新增的关键字,以上表格未曾提到,大家如果想去了解,可自行查找。

个别术语介绍(可先跳过,后文如若遇到不懂,可回来了解)

自动变量:指的是局部作用域变量,具体来说即是在控制流进入变量作用域时系统自动为其分配存空间, 并在离开作用域时释放空间的一类变量

存储类:是C语言与C++语言的标准中,变量与函数的可访问性(即作用域范围)与生存期

寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。

​ 计算机中的数据可以存储到:寄存器,高速缓存器,内存,硬盘,网盘

​ (以上存储从左到右按照,内存越来越大,造假越来越低,传输速度越来越慢排序)

​1、auto

auto:声明自动变量,一般都省略

​ 默认情况下,在代码块内声明的变量都是自动变量,但亦可用自动变量的关键字auto明确标识存储类

代码如下:

1

2

3

inta=0;

//上下两个变量其实相同,只不过上面省略了auto

autointa=0;

2、register

register:声明寄存器变量

​ 这个关键字定义变量后,会请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻 址访问,以提高效率。(因为寄存器很小,如果定义了很多register变量,可能会超过CPU的寄存 器个数,超过容量,故变量不是一定会存入寄存器内)

3、signed和unsigned

signed:有符号的(一般定义常量默认为signed)-------可以存储正数和负数

unsigned:无符号的-----不能存储负数

1

2

3

4

5

6

7

signedinta=10;//一般默认为signed,故只要写成:int a=10;

unsignedfloat=-75.3------>错误定义

float=-75.3------>正确定义

signedfloat=-75.3------->正确定义

4、typedef

typedef:类型重定义-------一般对于太过复杂的数据类型,可以重新定义一个简单的或有辨识度的使用

​ typedef <数据类型> <你取的类型名>

1

2

3

4

5

unsignedlonginta=10;//数据类型过于复杂,可以使用typedef重新定义

typedefunsignedlongintu_l_int;

u_l_int a=10;//与unsigned long int a=10等价

5、extern

extern:用在变量或者函数的声明前,用来说此变量/函数是在别处定义的,要在此处引用

​ 默认情况下全局变量只能在定义它的文件中使用(从定义该全局变量开始到所在文件的文件尾), 但如果在另一个文件中将这个变量声明为外部变量,那么这个变量的作用域将被扩展到另外一个文 件中。

代码如下:

先在源文件中创建项目名为:main.c

1

2

3

4

5

6

7

8

9

#inlcude <stdio.h>

externinta;

externintAdd(intx,inty);

intmain()

{

printf("%d\n",a);

printf("%d\n",Add(3,2));

}

再在源文件中创建项目名为:test.c-------作为全局变量,函数定义的文件

1

2

3

4

5

inta=10;//全局变量

intAdd(intx,inty)//

{

returnx+y;//函数定义

}

结果会输出10,5

6、拓展

变量的声明有两种情况

  • 一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
  • 另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。

例如:extern int a其中变量 a 可以在别的文件中定义的。
​ extern int i;//声明,不是定义
​ int i;//声明,也是定义

定义分配存储空间,而声明不会

如何区分声明还是变量

extern告诉编译器变量在其他地方定义了
如果声明有初始化式,就被当作定义,即使前面加了extern
函数的声明和定义区别比较简单,带有{ }的就是定义,否则就是声明
没有extern关键字的都是变量的定义

static:

static:声明静态变量

  • 修饰局部变量 使其生命周期变长(本质上改变了变量的存储类型)
  • 修饰全局变量 改变了全局变量的作用域,让静态的全局变量只能在自己的源文件内使用全局变量在其他源文件内部可以被使用,是因为全局变量具有外部链接属性。但是被static修饰后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量
  • 修饰函数 改变了函数的链接属性,将函数的外部链接属性变成了内部链接属性,使得函数只能在自己所在的源文件内部使用
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 12:59:55

JanusVLN:双隐式记忆架构革新视觉语言导航,实现语义与空间解耦

1. 项目概述&#xff1a;当大模型学会“认路”&#xff0c;视觉语言导航的范式革新 想象一下&#xff0c;你身处一个从未到过的陌生商场&#xff0c;手机导航告诉你&#xff1a;“向前走&#xff0c;在第二个路口左转&#xff0c;看到一家咖啡店后右转&#xff0c;你的目的地就…

作者头像 李华
网站建设 2026/4/30 12:58:52

115网盘Kodi插件终极指南:轻松实现云端高清视频播放

115网盘Kodi插件终极指南&#xff1a;轻松实现云端高清视频播放 【免费下载链接】115proxy-for-kodi 115原码播放服务Kodi插件 项目地址: https://gitcode.com/gh_mirrors/11/115proxy-for-kodi 还在为本地存储空间不足而烦恼吗&#xff1f;想要在Kodi中直接播放115网盘…

作者头像 李华
网站建设 2026/4/30 12:56:25

3分钟终极指南:Windows一键安装iPhone USB网络共享驱动完整教程

3分钟终极指南&#xff1a;Windows一键安装iPhone USB网络共享驱动完整教程 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.c…

作者头像 李华
网站建设 2026/4/30 12:55:31

告别Bus Hound!用QT+HIDAPI在Windows上直接读写USB设备(附完整代码)

告别Bus Hound&#xff01;用QTHIDAPI在Windows上直接读写USB设备&#xff08;附完整代码&#xff09; 在嵌入式开发和硬件交互应用领域&#xff0c;USB通信调试一直是个绕不开的话题。传统方式往往需要依赖Bus Hound这类第三方工具进行数据抓取和分析&#xff0c;不仅操作繁琐…

作者头像 李华
网站建设 2026/4/30 12:55:31

如何在3分钟内为Windows换上macOS鼠标指针:免费美化终极指南

如何在3分钟内为Windows换上macOS鼠标指针&#xff1a;免费美化终极指南 【免费下载链接】macOS-cursors-for-Windows Tested in Windows 10 & 11, 4K (125%, 150%, 200%). With 2 versions, 2 types and 3 different sizes! 项目地址: https://gitcode.com/gh_mirrors/m…

作者头像 李华
网站建设 2026/4/30 12:55:25

如何快速掌握ModTheSpire:面向初学者的完整模组加载器教程

如何快速掌握ModTheSpire&#xff1a;面向初学者的完整模组加载器教程 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire ModTheSpire是《杀戮尖塔》游戏的专业级外部模组加载器&#xff…

作者头像 李华