zoukankan      html  css  js  c++  java
  • 数组和指针相关

    1、没有显式初始化数组,则:

    • 在函数体外定义的内置数组,其元素均会初始化为0;
    • 在函数体内定义的内置数组,其元素均无初始化;
    • 无论数组在哪里定义,如果元素为类类型,则自动调用该类的默认构造函数进行初始化;如果该类没有默认构造函数,则必须为该数组的元素提供显式初始化。

    2、数组安全性最大的问题是缓冲区溢出(buffer overflow)错误。

    3、指针与迭代器相同点是:提供对其所指对象的间接访问。与迭代器不同的是指针用于指向单个对象,而迭代器只能用于访问容器内的元素。关键概念:给指针赋值或者通过指针进行赋值。

    引用和指针的区别:引用必须在初始化时赋值,引用一经初始化,就始终指向同一个特定的对象。

    指针和const限定符之间的两种交互类型:指向const对象的指针和const指针。C++语言强制要求指向const对象的指针也必须具有const特性。例:

    指向const对象的指针
    const double *cptr;
    const 指针
    const double *cptr;
    int errNumb=0;
    int *const curErr=&errNumb;
    指向const对象的const指针
    const double pi=3.14159;
    const double *pi_ptr=π

    动态分配数组:

    int n=get_size();
    int * p=new int[n];

    4、指针尽量在声明时初始化,以避免使用未初始化的指针。

    5、void*指针类型为C++特有,可以保存任何类型对象的地址。

    6、删除动态分配内存失败称为“内训泄露(memory leak)”。删除指向动态分配内存的指针失败,因而无法将该内存返还给自由存储区。

  • 相关阅读:
    唤起支付宝的链接地址
    nginx 403 问题解决
    Mac终端生成RAS秘钥对
    nashPay项目遇到的问题
    redis.clients.jedis.exceptions.JedisDataException 解决方案
    Springboot集成Quartz实现分布式任务调度
    Archives版本mysql5.7.23数据库的安装
    Scala语言操作记录
    搭建wordpress个人博客之(2)安装wordpress
    搭建wordpress个人博客之(1)一键安装lnmp[lamp, lnamp]环境
  • 原文地址:https://www.cnblogs.com/super86/p/3657224.html
Copyright © 2011-2022 走看看