• (转)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 用法类似,只是无法对解引值做更改。

  • 相关阅读:
    VPython—旋转坐标系
    分布式锁简单入门以及三种实现方式介绍
    win10 64bit安装redis及redis desktop manager的方法
    Kafka史上最详细原理总结
    idea常用快捷键
    十大Intellij IDEA快捷键
    Spark(一): 基本架构及原理
    Idea Live Templates代码模板
    IntelliJ IDEA 常用快捷键列表及技巧大全
    Win10 下 RabbitMQ 的 安装 配置
  • 原文地址:https://www.cnblogs.com/kalo1111/p/3031140.html
Copyright © 2020-2023  润新知