• CC++学习笔记 2


    C++记录4

    自动存储: 生命周期在代码块,存储在栈,后入先出。

    静态存储: 存在于程序的整个周期。

    动态存储: 使用new delete 在内存池(堆)存储,不受程序生命周期控制。

    内存泄露: 没有及时delete 由于作用域规则包含指针的内存被释放,但内存池中中的变量依然存在,将会导致后面指向该区域的指针无效。

    struct year_load
    {
    int year
    }

    year_load s1, s2[10], s3
    s1.year = 1998
    s2[2].year=1999
    year_load *ps = &s3

    C++记录5

    常量必须用常量指针
    const float a=3.1
    const float *pe = &a

    常量值,常量指针,函数中常量参数
    int gorp = 10
    int chips = 20
    const int *pe = &gorp 此处常量锁定的是变量值, 因此*pe=50不被允许, pe = &chips改变地址可以。


    int * const pd = &gorp 此处常量锁定的是地址, 因此*pd = 50可以, pd=&chips不允许。

    sum(const double arr[])因此可以保证原值不变。

    二维数组指针
    arr[r][c] == (*(*arr +r)+c) 数组就是指针

    值传递与引用传递:
    当数据结构过去庞大时,如果使用值传递在函数内复制一个副本,则消耗太多内存,不如传递的是值的内存地址。

    结构体不同于数组,结构的变量名是结构的值而不是地址:

    C++记录6:

    因此, 为提高内存使用效率, 应使用指针修改指定地址的内存, 而不是返回值。

    struct input
    {
    double x;
    }

    struct result{ double x; }

    void transform(const input *in, result *ou)
    {
    ou->x=in->x+20;
    }

    int main()
    {
    input in.x=5;
    result ou;
    transform(&in, &ou);
    }

    类与结构体使用方式一致。

    模板类 array 是类而不是数组。
    int main()
    {
    array<double, 4> arrClass
    fill(&arrClass)
    }

    void fill(array<double,4> *pa)
    {
    for(int i; i<4;i++)
    {
    cin>>(*pa)[i]
    }
    }

  • 相关阅读:
    Java学习个人备忘录之继承
    Java学习个人备忘录之文档注释
    Java学习个人备忘录之数组工具类
    Java学习个人备忘录之关键字static
    Java学习个人备忘录之构造函数&this
    Java学习个人备忘录之面向对象概念
    Java学习个人备忘录之数组
    Java学习个人备忘录之入门基础
    hdoj1162-Eddy's picture(kruskal)
    hdoj1102-Constructing Roads(Kruskal)
  • 原文地址:https://www.cnblogs.com/ruili07/p/9660836.html
Copyright © 2020-2023  润新知