C++ 一般类型与变量

    c++ 数据类型不算很多但很复杂,学好C++的关键我认为是要熟练掌握其常用数据类型,废话少说上菜!

 

    c++ 数据类型大概可以分为:内置类型,标注库类型(或者说是类类型),内置类型大致来说是能够转换为数字的类型包括 bool ,char ,wchar_t,short,int long,float,double,long double这么几类,和其他高级语言很类似,只是根据机器不同有些类型的取值范围(或者说是存放的字节长度)不一样。需要特别说明的是wchar_t,它叫宽字符类型,是对标准字符型的扩展,因为标准字符型占一个字节,但是有些扩展字符不是这样,比如一个汉字需要占用两个字节,但单汉字确实也属于字符型,这个时候wchar_t就出马了,如果定义一个内容为单汉字的字符变量就需要声明为wchar_t而不能使char。

   

    在内置类型中,除了布尔类型,有些类型可以是带符号的也就是说可以为整值也可以为负值,也可以强制一个类型定义时不带符号,等同于只有正值。类型的默认符号如下:

    int  short  long  默认带符号,不想带符号需要好强制定义,如下所示:

    int a = 1;  等同于 signed int a = 1;

    unsigned int a = 1; 强制定义了一个不带符号的整形变量

    无符号类中,符号位会被当成数据内容,所以无符号值要比带符号值正数范围对以为,假如有符号char 能表示 -127---127 的范围,无符号值范围则是0---255

    

    c++中变量的初始化更具类型不同而不同,内置变量初始化如下:

    int a;  会调用该变量类型的默认初始化器,内置类型一般会被默认初始化为0

    int a = 1;  复制(不是赋值)初始化为1

    int a(2);  直接初始化为2 该初始化效率最高且最灵活

    内置类型如果以 int a; 形式定义变量,系统是否会初始化该变量取决于变量定义的位置,在函数体外定义会初始化为0,函数体内定义的内置类型变量不会被初始化,但是系统建议用户最好不要依赖系统行为,在定义显示的初始化该变量。

 

    在很多语言中,申明和定义对象没有太大的区别。在C++中却是两个不同的概念。

    申明对象,表示说有这么一个类型的变量X存在,语法是 : extern int i ; 当系统运行到这里时表示系统中有一个INT类型的叫I得变量存在,系统不会真正创建该对象不会非配系统资源出来。

    定义对象,就是一般我们说的创建变量操作 int i = 0; 表示为名为I的INT变量非配了资源,其值为0。

    申明和定义对象的典型用法是:在一个共同的头文件中定义了好几个系统及的变量,多个INCLUDE该头文件的文件中就可以申明这些变量,然后在本文件其他地方直接使用。

    需要注意的是一个变量可以被申明多次,但只能定义一次。标准申明不能初始化值,如果初始化值则表示申明并定义了该对象。其他地方就不能在定义该对象只能申明。

    extern int i = 1;  等同于 int i = 1;

 

    c++常量 const 不同于有些语言,可以是编译时常量,也允许运行时常量。

    int a = 123;

    const int b = a; 运行时常量

    const int c = fun();  运行时常量

    const int d = 123; 编译时常量

    常量也可以被申明和定义。不同于非常量的定义,如果在头文件中定义如下:

    const a = 123 ;

    然后在引用头文件的文件中申明改变量是不允许的,因为常量的定义范围默认是局限于所定义的文件中,其他文件中想要申明并使用者常量则需要定义常量时候增加关键字 extern 如下所示:

    extern const a = 123 ; 这时候其他文件中才可以安全的申明并使用改常量。

    const a = 123; 与 extern const a = 123 并不等同,这点和变量不一样。只有在定义时候加了  extern 才可以在其他文件内被申明使用。

   

    c++中有一类叫引用类型的类型,可以吧它当成是被引用变(常)量的“全权代理”对它的操作和对被应用变量的操作效果完全一样。当然,引用类型如果是常量除了使用该引用值外不能做任何更改操作。

    int a = 1;

    int &ar = a;

    ar = 2; 等同于 a = 2

    以下着两个常量引用无法做任何的需该操作。

    const int a = 1;

    const int &ar = a;

    const int &ar1 = 2;

 

    c++的字符串类型是标准库中定义的,它有一个获取长度的方法size(),返回值不是通常意义上的INT型,而是一个 string::size_type 类型.

 

    Vector<T>是标准库中定义的范型集合类,它有一个获取长度的方法size(),返回值是一个 Vector<T>::size_type 类型.类型成员可以通过下标操作,也可以通过迭代器解引后操作,两种写法如下:

    vector<int>  arr(10,1);

    for(vector<int>::size_type cur = 0; cur != 10; ++cur)

    {

        arr[cur] = 0;

    }

 

    for(vector<int>::iterator item = arr.begin(); item != arr.end(); ++arr)

    {

        *item = 0;

    }

    两种写法功能一样,都是吧所有元素值设置为1。需要注意的是迭代变量的赋值需要解引在操作。

    Vector<T>类型是可变类型,可以随时通过方法Vector<T>.push_back(T) 在末尾增加列表项。

    还有一种类型vector<T>::const_iterator, 和 vector<T>::iterator 用法类似,只是无法对解引值做更改。

   

转载于:https://www.cnblogs.com/kingcat/archive/2011/12/29/2306067.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值