初识C语言(4)

简介: 初识C语言(4)

11、常见关键字

1.C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,具有特定含义、专门用作特定用途的C语言标识符,也称保留字,用户自己是不能创造关键字的。 标准C语言中共有32个关键字。

2.分类

(1)数据类型关键字:char(字符型),int(整形),double(双精度浮点型),float(单精度浮点型),short(短整型),signed(有符号的),unsigned(无符号的),long(长型),struct(结构体类型),union(共用体类型),enum(枚举类型),void,

(2)存储类型关键字:auto,static,register(寄存器),extern(声明外部符号)

(3)其它关键字:const(修饰常变量),sizeof(计算类型或变量所占内存空间的大小),volatile,typedef(类型重命名)

(4)控制语句关键字:break,continue,if,else,switch,case,default,goto,do,while,for,return(返回)

3.补充

(1)特定字-就是特殊含义的标识符,虽然不是关键字,但习惯上把他们看成关键字。有:

define,endif,line,include等

(2)标识符


           用途:所谓标识符就是用来标识在C语言中出现的符号常量、变量、数据类型、函数和语句的字符序列。

           定义:C语言规定,标识符由字母、数字、下划线组成,且第一个字符不能使用数字字符。


       标识符需注意以下几点:

1、标识符的有效长度随系统而异,建议标识符不要超过8个字符。如student_num

2、标识符命名的良好习惯——见名知意。如:name(姓名)、age(年龄)

3、C语言的关键字和特定字不能用作用户自定义的标识符。

4、C语言区分大小写。如Name和name是不同的标识符

5、C语言有许多库函数,尽量不要与库函数同名

先介绍以下几个关键字,后期遇到讲解。

11.1 关键字 typedef

typedef 顾名思义是类型定义,这里应该理解为类型重命名。


11.2 关键字static

在 C 语言中:

static 是用来修饰变量和函数的

1. 修饰局部变量 - 称为静态局部变量

2. 修饰全局变量 - 称为静态全局变量

3. 修饰函数 - 称为静态函数

11.2.1修饰局部变量


如上,我们可知:

1、内存图


2、


(1)普通的局部变量是放在栈区上的,这种局部变量进入作用域创建,出了作用域释放。         (2)但是局部变量被static修饰后,这种变量就放在静态区,放在静态区的变量,创建好后,直到程序结束才释放。

(3)本质上:static的修改改变了局部变量的存储位置,因为存储位置的差异,使得执行效果不一样。


注意:被static修饰是不影响作用域的!!!但是生命周期发生了变化,变长了。


11.2.2static修饰的全局变量



从上机实践中我们发现:


(1)全局变量本身是具有外部链接属性的,在A文件中定义的变量,在B文件中可以通过[链接]使用(extern-声明外部符号)


(2)但是如果全局变量被static修饰,这个外部链接属性就变成了内部链接属性,这个全局变量只能在自己所在的源文件内部使用


(3)static的修饰,会把外部链接属性变成内部链接属性,最终使得全局变量的作用域变小了

11.2.3修饰函数


从截图我们可知:


(1)函数本身是具有外部链接属性的


(2) 函数被static修饰后,外部链接属性就变成了内部链接属性,使得这个函数只能在自己所在的源文件内部使用,其他源文件无法使用(限制 了作用域)


总结:


(1)局部没有链接,全局才有链接


(2)static修饰局部变量不影响作用域!!!但是生命周期变长了


(3)static修饰全局变量和函数,限制的是作用域


(4)函数没有生命周期,他只是一个代码

#include“add.c”??(不建议)

头文件:

类型的定义

头文件的包含

函数的声明

11.3关键字register-寄存器

register-寄存器

计算机上,数据都可以存储在哪里?


注意:register只是建议的作用,会不会放在寄存器,编译器决定

12.#define定义常量和宏

1.#define定义符号常量(也叫标识符常量)

格式:#define 常量名 字面常量

2.#define定义宏

格式:#define 宏(形参) 宏体

补充:宏VS函数


(1)函数的形参有类型

(2)函数有{},

(3)宏一般就处理非常简单的逻辑




相关文章
|
存储 编译器 C语言
IO流(C++)
IO流(C++)
146 3
|
JSON 监控 数据可视化
实时日志分析:通过Golang编写实时日志分析模块,加强公司监控管理软件的日志监控功能
在当今数字化时代,企业面临着庞大而复杂的网络环境,对实时监控和日志分析的需求变得日益迫切。本文将介绍如何使用Golang编写实时日志分析模块,以增强公司监控管理软件的日志监控功能。通过本文的指导,你将能够建立一个定制的实时日志分析系统,更好地监测和管理公司的网络活动。
458 0
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
200 7
|
9天前
|
人工智能 运维 安全
|
7天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
676 23
|
8天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
14天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
1106 110