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)”。删除指向动态分配内存的指针失败,因而无法将该内存返还给自由存储区。

  • 相关阅读:
    Android开发之深入理解NFC(一)
    NetBeans找不到C/C++编译器
    【图解HTTP】第二章 简单的http协议
    长时间停留在calculating requirements and dependencies
    【图解HTTP】第一章 了解web及网络基础
    自定义DropDownMenu菜单
    【Android开发精要笔记】Android的Intent机制
    【操作系统】进程管理
    【Head First Java 读书笔记】(七)继承
    网易电面题总结
  • 原文地址:https://www.cnblogs.com/super86/p/3657224.html
Copyright © 2011-2022 走看看