变量的存储类型的研究

C语言中每个变量或者函数都有数据类型和存储类型。数据类型是int、double、float等类型,修饰变量。

数据类型规定了什么?

规定了数据的取值范围和可参与的运算。例如int可以参与取余运算,而double就不能参与取余运算。

内存区域的划分

系统区和用户区。用户区分为程序区、静态存储区、动态存储区。

静态存储区用来存放静态变量,例如全局变量

动态存储区域用来存放动态变量,包括函数调用时的现场信息和函数返回地址,还有函数体内定义的动态局部变量。

存储类型规定了什么?

存储类型规定了变量或函数占用存储空间的方式。

变量的存储类型分为动态存储和静态存储两大类。

如何理解静态存储类型的变量的特点?

这类变量在程序运行期间,由系统分配固定的存储单元,并一直保持不变,直到程序结束。所谓的不变是分配的存储单元不变,不能理解成值不变。“直到程序结束”就是 生存周期是整个main()函数运行期间。

如何理解动态存储类型的变量的特点?

在程序运行期间根据需要进行动态分配内存单元,使用完毕立即释放。如何理解动态两个字,如果一个程序两次调用同一个函数,分配给函数中局部变量的存储空间地址可能是不同的,与静态存储变量形成了对照,故用动态二字描述其内存分配是动态的。函数中的形参就是典型的动态存储类型。

C语言如何规定变量的存储类别?

auto 自动型、register寄存器类型、extern外部型、static静态型

auto和register属于动态类型

auto类型是最常用的,没有添加类型修饰符的变量都是auto的。

auto不能定义在函数体外为什么?

试想,定义在函数体外的没有带存储类型说明符的默认为全局变量的,全局变量是静态存储类型,而又要添加一个auto让它成为动态存储类型,是不可取的。

外部变量(extern)和全局变量是对同一种变量的两种说法。

如何理解外部变量的“外部”两个字。

外部,说明这个变量已经在其他文件中定义了,编译器不用再给它分配空间了。例如,在prg.1cpp中定义了int a,b; int fun();prg2.cpp中只需要 extern int a,b; extern int fun();就可以在prg2中使用变量和函数。在prg2中只是对变量和函数做了声明,而prg1中真正的定义了变量和函数。

静态变量(static)

属于静态存储类型的不一定是静态变量,静态变量的唯一标志是加了static修饰。

静态全局变量和非静态全局变量有什么区别?

静态全局变量只能在本文件内使用。非全局变量可以在整个工程内使用,可以通过外部变量说明调用它,如在另一个文件中extern int a这样使用非静态全局变量,而静态全局变量做不到。

静态局部变量和自动变量的相同和区别?

相同点是,他们都是在函数内部或者符合语句中定义的,属于局部变量。他们两个的作用于都只限于所在的函数体内。

不同点是,自动变量随着函数的结束,他的变量运行结果不会保留下来。再次调用函数时,自动变量会被初始化。而静态局部变量随函数运行一遍后,他的值会保留下来,下次调用时不会被初始化。

一个面试题:static的作用是什么?

1、static修饰的局部变量,会变成局部静态变量,它的值在下次调用时还会保持,不会被初始化

2、static修饰函数,函数不会被外部文件所调用

3、static修饰全局变量时,变量不会被外部文件所调用

2和3的static函数和全局变量私有化,防止被外部调用,这在编程中可是防止手误引起的麻烦。

 

寄存器变量(register)

当一个变量需要反复操作时,可以将其定义为寄存器变量。因为寄存器的存取速度远大于内存的存取速度。

寄存器变量属于动态存储类型,所以只有自动变量和形式参数才可以定义为寄存器变量。其实register可以不用写,应为大多编译器能自动优化,来确定哪些变量register效率高。

整理出现过的所有关键名词

 

uploading.4e448015.gif正在上传…重新上传取消uploading.4e448015.gif正在上传…重新上传取消

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python 中,整数类型是动态类型,可以自动转换为长整型。如果你的整数超出了普通整数的范围,Python 会自动将其转换为长整型。你也可以使用 `long()` 函数来将一个整数转换为长整型,例如: ``` a = 123456789012345678901234567890 print(type(a)) # <class 'int'> b = long(123456789012345678901234567890) print(type(b)) # <class 'int'> ``` 在 Python 3 中,`long()` 函数已经被移除,整数类型可以表示任意大小的整数。 ### 回答2: Python中的长整型变量是一种用于存储较大整数的数据类型。在Python 2.x版本中,有int和long两种整数类型,其中int类型可以存储有符号整数的取值范围为-2^31到2^31-1,而long类型则可以存储更大范围的整数。而在Python 3.x版本中,不再区分int和long类型,统一使用int类型,但可以存储任意大小的整数。 当整数超过int类型的取值范围时,Python会自动将其转换为长整型,以便能够存储更大的整数。可以使用内置函数type()来查看一个变量的数据类型,例如type(1234567890)会返回<class 'int'>,而type(12345678901234567890)则会返回<class 'int'>。 在进行长整型变量的计算时,Python会自动处理溢出问题,不需要手动进行处理。因为Python的长整型变量可以动态地调整大小,所以理论上可以存储无限大的整数。当进行大数计算时,长整型变量的运算速度会比较慢,因为它需要动态分配更多的内存空间。 使用长整型变量时,可以直接进行基本的数学运算,例如加法、减法、乘法和除法等。另,还可以使用内置函数来进行一些特殊的运算,例如求幂运算(pow())、取模运算(mod())和求绝对值(abs())等。 总之,Python的长整型变量提供了一种方便灵活的方式来存储和处理较大的整数,为数值计算和科学研究提供了很大的便利。 ### 回答3: 在Python中,长整型变量是一种用于表示长整数的数据类型。长整型变量可以存储任意大小的整数值,而不会受到内存限制的影响,因此可以用来处理非常大的整数。 在Python 2.x版本中,长整型变量需要显式地指定为`long`数据类型,例如`x = long(1000000000000)`。而在Python 3.x版本中,长整型变量会自动处理,无需指定特定的数据类型,例如`x = 1000000000000`。 长整型变量支持与其他数值类型的运算,可以进行加减乘除等基本算术运算,也可以进行位运算和比较运算。例如,可以使用`x + y`进行两个长整型变量的相加运算,或者使用`x * y`进行两个长整型变量的相乘运算。 此,长整型变量还支持一些内置函数和方法,用于对长整型变量进行操作和转换。例如,可以使用`abs(x)`函数获取长整型变量的绝对值,或者使用`int(x)`函数将长整型变量转换为普通整数。 需要注意的是,由于长整型变量对内存使用较大,所以在进行大规模计算时可能会影响运行速度。此时,可以考虑使用其他的数据结构和算法来替代长整型变量的使用,以提高程序的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值