首页 > 其他分享 >C语言的其他关键字

C语言的其他关键字

时间:2025-01-04 17:34:23浏览次数:3  
标签:变量 数据类型 C语言 关键字 static 其他 寄存器 修饰 函数

数据类型

enum

枚举,为一个变量定义一组命名的整数常量,或者更简单点就是给一组变量(一般是相关的)起一个统一的名字,这一组变量在其中就会有一个对应的整数常量,从0开始依次递增,也可显式指定,之后的依次递增,可以用这个名字.变量名的格式进行使用,对应的整数值主要是为了内部表示和可能的类型转换,不要用整数表示其中的变量名,枚举成员是具有特定的含义和类型的命名变量,他们只是和底层整数值相关联。

struct

结构体,可以说是其他类型的组合体,定义一个结构体,其中可以放入除了本身外的其他数据类型的变量,定义时要确定好其所需要的空间大小,这时本身还没有确定空间大小,如果其中有包含了本身的结构体不就相当于死循环出不来了(可以放个结构体指针),一个人由姓名、性别、年龄等属性构成的,同理结构体就是由其中的变量(结构体成员)组成的,这一块和C++中的类class很类似,意思上差不多,细节上有不同。结构体定义好后便成了一种自定义的数据类型,用法和其他数据类型一样,就是在创建结构体变量时其中已经包含了各种自定义好的变量,而这些需要使用结构体变量名.结构体成员的格式进行初始化,如果结构体成员中包含指针则有可能情况就较为复杂了,之后记录。

union

联合体,与struct不同的是允许不同的数据成员共用一块内存空间,因此同时只能存储一个数据成员的值,每次只能给一个成员赋值,赋新的值只会覆盖之前的值,可以理解赋值时是为这块空间放入了内容,只是根据要赋值的成员的类型对其进行不同的解释。

typedef

给一个数据类型重新取名,也就是取个别名,简化代码的编写,提高代码的可读性和可维护性,比如修饰一个变量的前缀太长时可以起一个别名。

存储类

auto

自动变量,在C99标准之前,auto主要用于存储类变量的说明,默认情况下函数内部声明的局部变量赋值就是auto存储类的,代表着它们在函数调用时分配内存,在函数返回时释放内存(即在栈上分配空间),一般不用显式的使用,局部变量默认就是auto的。

static

静态的,简单来说static修饰的变量在整个程序运行过程中都存在且其它源文件不可见,不释放空间,static修饰的函数无法被其它文件获取,此关键字很重要也相对复杂,后续补充。

extern

外部引入,连接不同的源文件中的变量或函数,在一个源文件中extern一个其它源文件才有的变量或函数(要注意这个变量有无static修饰,如有static则extern会报错找不到该变量或函数)之后的代码就可以使用这个变量或函数了。

rigister

寄存器变量,定义变量时在变量前加上rigister修饰表明这个变量被放在寄存器中,是无法获该变量的地址的,好处是存取时速度相对从内存或硬盘存取更快一点,但不可多用,计算机的寄存器并不多;如果图快把变量都修饰为寄存器变量,编译器无法将所有声明的寄存器变量都存储在寄存器里,一部分还是会放在内存中,而且为了使程序员更加清楚程序和内存的情况往往需要明确各个变量的情况特别是地址,但寄存器变量具有无地址性,综合硬件条件、编译器以及无地址性一般不用或尽量少用。

其它

const

只读,const修饰变量表明该变量只读,不可修改(用指针可破除),存放在内存的只读数据段(rodata),称为只读变量(和常量区分),const修饰函数表明该函数内对变量只读,不会对变量进行修改。

volatile

防止编译器优化,常用于嵌入式C语言中,外部硬件状态可能会变化,如连接、未连接或硬件损坏等,编译器可能会对频繁访问的变量进行优化缓存到寄存器,但是硬件状态发生变化的话程序还会从寄存器取出这个被优化后的存到寄存器的值,这时两边状态是不对应的,变量用volatile修饰则可避免优化。

sizeof

获得数据类型的空间大小,不同的平台,数据类型的大小可能不同,一般在使用一个新平台前会使用sizeof测一下该平台的各个基本数据类型所占的空间大小,另外在运算中也常会用到sizeof,比如获取数组的空间大小。

大部分个人练手项目用到的较少,公司成型项目频繁使用,在确定性、安全性还有避免二义性等方面十分重要。

标签:变量,数据类型,C语言,关键字,static,其他,寄存器,修饰,函数
From: https://blog.csdn.net/m0_71936409/article/details/144930074

相关文章

  • c语言文件操作
    1.为什么使用文件(将数据记录保存)我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受......
  • C语言实现通讯录(静态的版本)
    通讯录的实现框架静态的版本实现一个通讯录:人的信息:名字+年龄+性别+电话+地址1.存放100个人的信息2.增加联系人3.删除指定联系人4.查找联系人5.修改联系人6.显示联系人7.排序测试功能test.c通讯录相关的实现contact.c通讯录相关的声明contact.h......
  • 考试座位号(PTA)C语言
    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求......
  • 统计素数并求和(PTA)C语言
    本题要求统计给定整数M和N区间内素数的个数并对它们求和。输入格式:输入在一行中给出两个正整数M和N(1≤M≤N≤500)。输出格式:在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。输入样例:1031输出样例:7143代码:#include<stdio.h>intmain(){......
  • 降价提醒机器人(PTA)C语言
    小T想买一个玩具很久了,但价格有些高,他打算等便宜些再买。但天天盯着购物网站很麻烦,请你帮小T写一个降价提醒机器人,当玩具的当前价格比他设定的价格便宜时发出提醒。输入格式:输入第一行是两个正整数N和M(1≤N≤100,0≤M≤1000),表示有N条价格记录,小T设置的价格为M......
  • TypeScript中的Declare关键字有什么作用?
    在TypeScript中,declare关键字主要用于类型声明文件中(通常是.d.ts文件),用于表示某个变量、函数、类、模块等存在于JavaScript环境中,但在当前的TypeScript文件中并没有具体的实现。这有助于TypeScript编译器理解JavaScript库或环境中的全局变量、函数等,从而提供类型检查......
  • C语言删除偶数
    谨以此笔记记录C语言学习代码均为原创,记录个人学习,欢迎大家交流╰(*°▽°*)╯【问题描述】从键盘终端输入10个整数,保存在一维数组中。删除偶数后,将其输出。【输入形式】14233454567797132425【输出形式】2377971325代码展示:#include<iostream>usingnames......
  • if else分支语句,C语言if else详解(新手必看)
    没有学习ifelse语句之前,我们看到的C语言代码都是顺序执行的,也就是先执行第一条语句,然后是第二条、第三条……一直到最后一条语句,这称为顺序结构。但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够,没有权限使用。这时候程序就......
  • 主流C语言编译器大全(新手必看)
    目录C语言编译器桌面操作系统下的编译器嵌入式系统下的编译器C语言主流IDE大全Windows下如何选择IDE?1)VisualStudio2)DevC++3)VisualC++6.04) Code::Blocks5) TurboC6) C-FreeLinux下如何选择IDE?MacOS下如何选择IDE?C语言编译器由于C语言的......
  • 单链表的一些操作(c语言):插入头节点、尾节点、删除某个节点
    #include<stdio.h>#include<stdlib.h>structNode{  intdata;  structNode*Next;  /*data*/};typedefstructNodenode;node*Link;// 创建一个新的节点node*CreateNewNode(intdata){  node*NewNode=(node*)malloc(sizeof(node......