【C语言】初识C语言(中篇)2

简介: 【C语言】初识C语言(中篇)

11. 常见关键字


C 语言标准中规定了32个关键字,而在之后C99的标准下又增加了五个关键字,anduin这次对大家进行归纳的是C标准中的32个关键字,我们根据其特性,可以把它分为几类:



数据类型关键字(12个)


char:声明字符型变量或函数


short:声明短整型或函数


Int :声明整型变量或函数


long :声明长整型变量或函数


signed:声明有符号类型变量或函数


unsigned:声明无符号整形变量或函数


foat:声明浮点型变量或函数


double:声明双精度变量或函数


struct:声明结构体变量或函数


union:声明共用体(联合)数据类型


enum:声明枚举类型


void:声明函数无返回值或无参数,声明无类型指针



控制语句关键字(12个)


1.循环控制(5个)


  • for:一种循环语句


  • do:循环语句的循环体


  • while :循环语句的循环条件


  • break:跳出当前循环


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



2.条件语句(3个)


  • if:条件语句


  • else:条件语句否定分支


  • goto:无条件跳转语句



3.开关语句(3个)


  • switch:用于开关语句


  • case:开关语句分支


  • default:开关语句中的"其他"分支



4.返回语句(1个)


  • return:函数返回语句(可以带参数,也可以不带参数)



5.存储类型关键字(5个)


  • auto:声明自动变量,一般不使用


  • extern:声明变量实在其他文件中声明


  • register:声明寄存器变量


  • static:声明静态变量


  • typedef:用以给数据类型取别名(但是该关键字被分到存储关键字分类中,虽然看起来没什么相关性)


注意:存储关键字,不可以同时出现,也就是说,在一个变量定义的时候,只能有一个。



6.其它关键字(3个)


  • const:声明只读变量


  • sizeof:计算数据类型长度


  • volatile:说明变量在程序执行中可被隐含地改变



这里anduin带大家有选择性的,讲解几个关键字,若没有讲到日后我们一一讲解:



auto


auto 从字面意思来看就是自动的意思 它也被成为自动变量

局部变量都是自动创建自动销毁的,所以局部变量都是auto修饰的。


int main()
{
    auto int a = 10;//局部变量都是auto类型的,因此auto基本会被省略
    return 0;
}


typedef


本质


本质:类型重命名


使用方法

#include<stdio.h>
typedef unsignde int u_int;
int main()
{
    u_int x = 0; 
    return 0;
}


分析:当我们在写代码时,一些代码类型很长,例如无符号整型unsigned int或者结构体,指针等,这时我们就可以用typedef对它进行类型重命名,本段代码中就是用了typedef来重命名unsigned int为u_int。


作用


对类型重命名的一种解决方案,让我们在面临冗长的类型命名方面上更加简便,可以对一些不太好理解的数据类型进行简化。



register


我们先想想,数据在计算机上可以存放在哪里呢?


1.内存


2.硬盘


3.高速缓存


4.寄存器



存储金字塔

309be178d60b4f8887bb71ec8a006b1f.png


寄存器存在的本质


从硬件层面上,提高计算机的运算效率。当读取数据时,计算器先去寄存器中读取,如果没有读取到,再去高速缓存区中读取,最后才是内存,而且在cpu再读取寄存器中的数据时,内存->高数缓存区(cache),cache->寄存器,这个数据传递过程会持续进行,大大提高效率!



register 修饰变量


也就是相同的原理,尽量把所修饰变量,放入CPU寄存区中,从而达到提高效率的目的。


#include<stdio.h>
int main()
{
    register int a = 10;
    return 0;
}


register 修饰什么变量


register可不是什么变量都适合修饰的,要知道寄存器的价格是很昂贵的,register所修饰的变量也得"精挑细选"一番。



  1. 局部变量(全局变量由于其特性会导致CPU寄存器被长时间占用)
  2. 不会被写入的(写入就需要写回内存,register本身就是快速读取,后续还要读取检测的话,就与原目的背道而驰了)
  3. 高频被读取的变量(俗话说把钱用在刀刃上,存入了寄存器,当然要经常使用的)
  4. 如果要使用,不要大量使用,寄存器的数量是有限的!



小科普


register修饰的变量,不能取地址!!!


#include<stdio.h>
int main()
{
    register int a = 0; 
    printf("&a = %p\n", &a);
    return 0;
}



编译运行:

5f4350ff013f4997854a5b10e9ad1f0c.png


分析:因为register的作用,变量a已经被放入寄存器中了,你怎么取地址呢?




结语


以上就是初识C语言中篇的内容,虽然只有两个专题,但是内容其实也是很多的,希望我的文章对你有帮助,如果大家觉得anduin写的还可以的话,请点赞+收藏哦!你们的肯定就是对我最大的鼓励!


相关文章
|
3天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
3天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
364 91
|
4天前
|
SQL 人工智能 自然语言处理
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
随着生成式AI的普及,Geo优化(Generative Engine Optimization)已成为企业获客的新战场。然而,缺乏标准化流程(Geo优化sop)导致优化效果参差不齐。本文将深入探讨Geo专家于磊老师提出的“人性化Geo”优化体系,并展示Geo优化sop标准化如何帮助企业实现获客效率提升46%的惊人效果,为企业在AI时代构建稳定的流量护城河。
378 156
Geo优化SOP标准化:于磊老师的“人性化Geo”体系如何助力企业获客提效46%
|
4天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
4天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
261 156
|
12天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。