类型修饰符

1,auto

默认情况下,char a --> 实际就是auto char a;只是将auto省略了。

auto是一个可读可写的内存空间--栈空间

2,register

1,限制变量定义在寄存器上的修饰符,cpu上的寄存器(cpu内部内存),可以使变量不用指向内存,直接指向cpu的寄存器

2,定义一些快速访问的变量,编译器会尽量安排CPU的寄存器去存放这个这个A,如果寄存器不足,A还是会放在存储器中

3,无法访问变量的地址

    register int a;
    a = 0x10;
    printf("%d",&a);

3,static

静态

修饰3中数据:

1>,函数内部变量

int fun()
{
   int a; ==> static int a;
}

2>, 函数外部的变量

int a; ==> static int a;
int fun()
{
    
}

3>,函数的修饰符

int fun() ==> static int fun()

4 extern

外部声明

5,const

常量的定义,只读的变量,在c中还是有方法改变,因为它是个变量

6 volatile

告知编译器编译方法的关键字,不优化编译

修饰变量的值的修改,不仅仅可以通过软件,也可以通过其他方式(例如硬件)

时间: 2024-10-29 19:06:10

类型修饰符的相关文章

C++变量内存分配及类型修饰符

前言 了解C++程序内存分配,有助于深刻理解变量的初始化值以及其生存周期.另外,变量类型修饰符也会影响到变量的初始化值及其生存周期.掌握了不同类型变量的初始化值及其生存周期,能够让我们设计程序时定义变量时更准确. 内存分配 1.     C++程序的内存布局 现代电脑都是遵循冯诺依曼体系结构,所以C++程序的内存布局也是遵循该体系的.主要包括5个部分,即代码段.数据段.BSS段.堆和栈.. 1.     代码段 代码段(code segment/text segment),通常是指用来存放程序执

C语言学习笔记(2):volatile与register类型修饰符

1.volatile volatile是易变的,不稳定的意思,volatile是关键字,是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统.硬件或者其他线程等,遇到这个关键字声明的变量,编译器对访问该变量的代码不在进行优化,从而可以提供对特殊地址的稳定访问.那么什么是编译器优化呢? 为了提高运行效率,攻城湿们可是费尽心机地把代码优化,把程序运行时存取速度优化.一般,分为硬件优化和软件优化.硬件优化,流水线工作,详细可以参考<计算机组成原理>.软件优化,一部分是程序

功能:类型修饰符long和unsigned的使用

#include<stdio.h> main() { char a1,b1; unsigned char a2,b2; int x1,y1; long x2,y2; a1=127;    b1=129; a2=127;    b2=129; x1=32767;   y1=32769; x2=32767;   y2=32769; printf("a1=%d,a2=%u,b1=%d,b2=%u\n",a1,a2,b1,b2); printf("x1=%d,x2=%u,

关于C语言的类型修饰符

分享网址 http://wenku.baidu.com/link?url=e-xWNn7f84rrEf_vhHz5CQh2LCVmaGBTA6iB0BC8zPv_8eXz5SKmRofsSuenh8wn_JjeQZBD103xCA6wqDkYo9SzlIvKgCpYwwrbyNvbxVS 在一般的 C 教科书中,可以见到 6 种类型修饰符,分别是 : auto, const, register, static, volatile, extern. 局部变量除非显式指明为 static, 否则默认

c语言类型修饰符及内存

太难了,嵌入式这条路是个大坑啊,学的东西太多,但没办法,既然选择了这条路,坚持走下去吧,打好基础,铺好每一块砖,才能走的更加稳健 今天来学习一下c语言类型修饰符及内存分布 1.auto int a; 默认在内存 2.register int a; 限制变量定义在寄存器上的修饰符 编译器会尽量安排CPU的寄存器去存放这个a,如果寄存器不足,a还是放在内存中 取地址符号&对a不起作用 3.static 应用场景: 1.函数内的变量 2.函数外的变量 3.函数的修饰符(函数也是一个变量) int fu

C#的&quot;?&quot;修饰符和&quot;??&quot;运算符

一.  ?  可空类型修饰符 “?”用来修饰为空的值类型,在加上“?”修饰符后,值类型也可以为空了,如: public int? CommandTimeout { get; }: var prop = new PropertyInfo(); prop?.CanWrite == true; public CommandDefinition(string commandText, object parameters = null, IDbTransaction transaction = null,

Java中的修饰符及其作用

修饰符类型 修饰符 说明 访问控制修饰符 default default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类.接口.变量.方法. private private : 在同一类内可见.使用对象:变量.方法.   注意:不能修饰类(外部类) public public : 对所有类可见.使用对象:类.接口.变量.方法 protected protected : 对同一包内的类和所有子类可见.使用对象:变量.方法. 注意:不能修饰类(外部类). 非访问修饰符 st

java的基础语法(标识符 修饰符 关键字)

Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是一个模板,它描述一类对象的行为和状态. 方法:方法就是行为,一个类可以有很多方法.逻辑运算.数据修改以及所有动作都是在方法中完成的. 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定. 基本语

C#原始类型扩展方法—this参数修饰符

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的.它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀.仅当您使用 using 指令将命名空间显式导入到源代码中之后,扩