变量定义概念汇总

变量定义:一个数据类型+一组声明符(类型修饰符 为声明符一部分)


1.数据类型:

  1. 基本的数据类型有:整形、实型、字符型、指针型等
  2. 扩展的数据类型有:数组,结构体,联合、共用体等
  3. 自定义的类型
  4. 类型指示符 decltype
  5. 类型说明符 auto

    auto i = 0, *p = &i; //通过初始值来推算类型,只会对第一个初值进行推测


2.可修饰数据类型的修饰符:

数据类型的修饰符修饰的是一组声明符所代表的变量

如 const char i='a, j= 'a'; //i, j都是const char 型

  • 1.数据类型说明符:signed, unsigned, short, long

他们也可以代表简化的写法来定义变量

类型所占字节:C++标准规定,int占一个机器字长。在32位系统中int占32位,也就是4个字节,而在老式的16位系统中,int占16位,即2个字节。而C++标准中只限制规定short int不能超过int的长度,具体长度的可以由C++编译器的实现厂商自行决定。目前流行的32位C++编译器中,通常int占4字节,short int占2字节。其中short int可以简写为short。类似地,C++标准只限制了long int不得小于int的长度,具体也没有作出限制


  • 2.存取限定符:const, volatile


  • 3.存储分类说明符:extern, static, register, auto

默认情况下,char a ;实际就是auto char a;只是将auto省略了。auto是一个可读可写的内存空间--栈空间

register :1,限制变量定义在寄存器上的修饰符,cpu上的寄存器(cpu内部内存),可以使变量不用指向内存,直接指向cpu的寄存器   2,定义一些快速访问的变量,编译器会尽量安排CPU的寄存器去存放这个这个A,如果寄存器不足,A还是会放在存储器中 3,无法访问变量的地址(如果访问则register失去作用)

  • 4.其他:constexpr
    有编译器来验证变量的值是否为常量表达式,是静态常量数据,新标准前用static const定义,只有文件作用域。

3.可修饰声明符的修饰符:

声明修饰符修饰的只是单个标识符表示的变量,即只表示一个变量

例子:

char *const ci = &i, cj;  //cj为char

char const *ci=&i, cj ; //cj为const char

这里在存取限定符如果在 *和表示符之间定义,则修饰单个变量,如果在*和表示符前定义,则修饰所有的一组变量。


  • 1.类型修饰符 *, &, [], ()

这些修饰符混合时,从变量名称开始往右读,读到尽头或闭括号之后再从变量名称开始往左读。

int *p; int *&r =p; //对指针p的引用

int *a[];//先往右读,[]是有一个数组,再往左读int *是指向int的指针。所以int *a[]就是由指向int的指针组成的数组,等价于int *(a[])。

int (*a)[]//先由a往右读,碰到),因此再往左读,读到*,因此是一个指针。然后再往右读[],再往左读int。所以最后int (*a)[]是指向由    //int组成的数组的指针。

同理,int *f(),是一个函数,返回一个指向int的指针。而int (*f)()则是一个指针,指向一个返回int的函数。


  • 2.存取限定符:const, volatile


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值