首页 > 其他分享 >C语言中的变量——自动变量、寄存器变量、易失变量、外部变量和静态变量

C语言中的变量——自动变量、寄存器变量、易失变量、外部变量和静态变量

时间:2022-09-30 15:23:39浏览次数:68  
标签:调用 变量 外部 易失 C语言 静态 寄存器 函数

参考链接:

C程序设计语言4.6、4.7节

UNIX环境高级编程 7.10节 函数setjmp和longjmp

https://blog.csdn.net/weixin_46309058/article/details/122042561

 

变量的存储类别分有自动(动态),静态,寄存器和外部四种。
auto 自动变量
static 静态存贮分配变量(又分为内部静态和外部静态)
extren 外部变量/全程变量(用于外部变量说明)
register 寄存器变量 (用于在硬件寄存器中)


四大类所有变量必须先说明(定义),后使用。

自动(动态)变量:

函数中的局部变量不加static关键字修饰就是动态变量。每次调用该函数的时,系统会给它分配存储空间,该函数调用结束释放其存储空间,及动态变量每次被调用都会被赋初值。

静态变量:

全局变量都是静态变量,函数中的局部变量加static关键字也是静态变量,格式为: static + 类型名 + 变量名 。多次调用该函数,只有第一次调用会赋初值,其余调用时,其值都是在上次调用该函数执行结束后的值。

外部变量:

在函数外部定义的变量即为外部变量,它的作用域是整个程序(全程变量)。

C程序可以分别放在几个文件上,每个文件可以作为一个编译单位分别进行编译。外部变量只需在某个文件上定义一次,其他文件若要引用此变量时,应用Extern加以说明(外部变量定义时不必加extern关键字)。

在同一文件中,若前面的函数要引用后面定义的外部(在函数之外)变量时,在函数里加extern加以说明。

引进外部变量的原因:解决函数单独编译的协调;与变量初始化有关;外部变量的值是永久的;解决数据共享;

注意:函数本身也被认为是外部变量

寄存器变量:

只有自动(局部)变量和函数参数才能进一步指定为寄存器存贮类

使用register变量可以提高存取速度,但寄存器变量的数目依赖于具体机器,声明多了也只有前几个有效。

只限于int,char,short,unsigned和指针类型用于寄存类。

不能对register变量取地址(即&操作)

标签:调用,变量,外部,易失,C语言,静态,寄存器,函数
From: https://www.cnblogs.com/kongweisi/p/16744994.html

相关文章

  • 【c语言编程基础】结构体单向链表的基本操作
    前言 关注点 code#include<stdio.h>#include<stdlib.h>#include<string.h>//strcat#defineSize4typedefstructTable{intlen;intsize;......
  • 【C语言基础】C语言数据类型及数据对齐
    前言code#include<stdio.h>#include<stdlib.h>#defineSize5typedefstructTable{charlength;charsize;charss;intlen;}table;tabl......
  • python-当函数赋给变量时带括号与不带括号的区别
    python-当函数赋给变量时带括号与不带括号的区别参见下面的例子:deftest():print("callthetestfunc")return0p=testprint("type(p):",type(p))pr......
  • C语言:字符串连接函数
    #include<stdio.h>#include<string.h>voidlianjie(chara[],charb[],charc[]){inti,j,len1=strlen(a),len2=strlen(b);for(i=0;i<len1;i++)c[i]=......
  • 【C语言练习_2】用C语言实现凯撒密码加密解密
    1.凯撒密码简介又叫循环移位密码.它的加密方法是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数:E(m)=m+k(modn)其中:m为明文字......
  • C语言中字符串结束符'\0'的讨论
    '\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。在数值类型里就代表数字0。数值类型存储时,最高位决定正负号,其他位都为0可不就是0了么?'\0'是转译字符......
  • js中拼接字符串作为变量名后赋值
    js中有业务场景需要生成很多的变量,但是变量的名称是根据参数的不同而区分的。一般情况下我们会构建一个数组,然后通过数组下标的形式来操作。 意外发现一个方法可......
  • 第十组 chap1-2学习总结——对c语言的第一印象
    博客内容概括:一,引言。二,学习内容梳理。三,课后习题中的问题及解决历程。四,小结。 一,引言 经过两周的线上小组学习,让对编程的第一印象只停留在黑客电影和科幻片的......
  • 变量,常量
    变量常量变量Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。typevarName[=value][{,varNam......
  • C语言实现顺序栈、单链栈、双向链栈
    #defineMaxlength8/***数据结构类型:顺序栈*插入方法:尾插法*是否有头节点:否*说明:在主函数直接定义一个结构体节点,取地址作形参,避免使用malloc函数而考虑二......