zoukankan      html  css  js  c++  java
  • C/C++

    二十一、       枚举类型

           枚举定义的格式如下:

                  enum 枚举名{枚举元素1,枚举元素2,……};

           没有指定值的枚举元素,第一个枚举成员的默认值为整型的0。对于以指定的值,后续枚举成员的值在前一成员上加1,以此类推。

           *枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

           *枚举系统本身由系统定义了一个表示序号的数值,从开始顺序定义为0,1,2,3,4,…

           *只能把枚举值赋予给枚举变量,不能把元素的数值直接赋予给枚举变量。

           *如一定把数值赋予枚举变量,则必须用强制类型转换。

           *还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

           *枚举中若一元素被赋值,则气候的元素值依次在原值上递加1.

    二十二、       siezof函数

           在Pascal语言中,sizeof()是一种内存容量度量函数,功能是返回一个变量或者类型的大小(以字节为单位);在C语言中,sizeof()是一个判断数据类型或者表达式长度的运算符。

           一般的,在32位编译环境中,sizeof(int)的取值为4。

           在32位计算机中,一个指针变量的返回值通常是4(注意结果是以字节为单位),在64位系统中指针变量的sizeof通常为8。

          下面的c3,c4值应该是多少呢

    1

    2

    3

    4

    5

    6

    7

    8

    void foo3(char a3[3])

    {

    int c3=sizeof(a3);//c3==

    }

    void foo4(char a4[])

    {

    int c4=sizeof(a4);//c4==

    }

    也许当你试图回答c4的值时已经意识到c3答错了,是的,c3!=3。这里函数参数a3已不再是数组类型,而是蜕变成指针,相当于char* a3,为什么仔细想想就不难明白,我们调用函数foo3时,程序会在栈上分配一个大小为3的数组吗不会!数组是“传址”的,调用者只需将实参的地址传递过去,所以a3自然为指针类型(char*),c3的值也就为4。

           sizeof:返回这个数组所有元素所占的空间,包括“”;

           strlen:不区分指针还是数组,返回其长度,不包括“”

           不允许指针相加,两个地址相加无意义也可能越界,所以规定不允许指针相加。

    二十三、       C++是面向对象的编程

           特征为:封装性;继承性;多态性。

           C语言是面向过程的编程。

           面向对象的基本原则是:

    1、 单一职责原则;

    2、 开放封闭原则;

    3、 里氏替换原则;

    4、 依赖倒置原则;

    5、 接口隔离原则。

    二十四、       vector函数

           Vector类 是在 java 中可以实现自动增长的对象数组,vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

           vector初始化方式:

    1、 vector<int>v(10);表示size为10的vector,每个元素执行默认初始化;

    2、 vector<int>v(10,1);表示创建size为10的vector,每个元素初始化为1;

    3、 vector<int>v{1,2,3,4};表示创建size为4的vector,元素的值分别为1,2,3,4.

    4、 vector<int>v;表示创建size为0的vector。

    例:对于string=”hello”;初始化

           vector<string>s({“hello”})   //大括号表示这是一个一维数组,第一个元素为“hello“。

           vector<string>s(1,”hello”); //结果同上,表示数组中只有一个“hello”

           vector<vector<string>>s({{“hello”}});       //两个大括号表示这是一个二维数组,其中第一行第一列的元素为“hello”。

           vector<vector<string>>s(1,{“hello”});       //结果同上,表示数组中第一个元素为{“hello”}。

    二十五、       构造函数被调用的三种情况

    1、 定义一个对象时,以本类另一个对象作为初始值,发生复制构造;

    2、 如果函数的形参是类的对象,调用函数时,将使用实参对象初始化形参对象,发生复制构造;

    3、 如果函数的返回值是类的对象,函数执行完成返回主调函数时,将使用return语句中的对象初始化一个临时无名对象,传递给主调函数,此时发生复制构造。

  • 相关阅读:
    1.8新特性
    线程池
    微服务简介
    缓存三大问题
    Redis分布式锁的正确实现方式
    【java-10&11&12】java语言(Hello World相关)
    【postman】postman 安装失败
    【java-04-09集】JDK的下载和安装&配置环境变量(临时和永久)&命令行方式
    【ISTQB】TM&TA&TTA区别
    【git】学习地址
  • 原文地址:https://www.cnblogs.com/TheFly/p/13091951.html
Copyright © 2011-2022 走看看