zoukankan      html  css  js  c++  java
  • 《c++程序设计现代方法》笔记2

    数据处理

    数组的定义: int my_array[6],表示包含6个整型元素的数组

    二维:int box[3][3],

    对于一维数组,声明时候不需指定大小,如声明 int sumArray (int values[ ]);

    指针是全书的一个重点讲述内容,占据三章的内容(12--14)

    指针的声明:<type> *<ptr_name>;    type表明了指针所指向的内存类型。

        int x=5;
        int *p_x = &x;//获得变量的地址,&取地址运算符
        //*p_x = 2;     //初始化x为2
        cout << p_x << endl;       //输出内存地址
        cout << *p_x << endl;     //指向内存,取出里面的值

    输出结果如下:00C7F998
    5

    指针,也是变量,里面存储的是另一个变量的地址,示意图如下。

    绝大多数变量容纳的是有用的信息,如图中的5,3,6;很明显,指针的用途只有一个,用来定位另一样东西。指针是间接访问,以区别一般的直接访问。

    指针像其他任何变量一样有一个可以访问的地址,那么就有指向指针的指针。

     

    运行时的内存布局:

     

    一个运行的程序在内存中表示为这四个空间区域。全局、堆与栈更像是代码区的分解,图片文字解释已经很清楚了。

    “在使用的内存,称为;未被分配的内存区域称为。”,此话,结合此图更好理解。

    栈,是一种数据结构。栈,其实反映的是函数的调用过程,就是栈空间的操作过程。

    使用指针,便可以访问这块未使用的内存。内存为稀缺资源,当不使用时候,应该释放回去。

    不要引用未被赋值的指针。如果某个指针暂且不用的话,可以给它赋一个空指针指向NULL,表示不指向任何地址。头文件<cstddef>用于NULL。

    在引用指针指向的内容时,先检查指针的值是否为NULL很有必要,这样可确保指针指向的空间是有效的。

    动态分配:在程序运行时候,请求所需要的内存大小。强调灵活性

    int *p_int = new int;       new是关键字,用来将未分配的内存初始化分配给指针。

    delete p_int                  指针释放,

    申请一个动态的整型变量:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     int *p;
     7     p = new int;
     8     if (!p)              //如果空间申请失败
     9     {
    10         cout << "allocation failure" << endl;
    11         return 1;
    12     }
    13     *p = 20;
    14     cout << *p;
    15     delete p;            //指针释放
    16 
    17     cin.get();
    18     return 0;
    19 }

     看如下代码:最终x=25;p_p_int=27;p_int=3.注意区分加****与不加***的区别。

    主要涉及到变量值与地址的问题。

    1     int x = 0;
    2     int *p_int = &x;         //声明指针的指向   
    3     int **p_p_int = &p_int;  //声明指针的指向
    4     *p_int = 12;             //对x赋值,x=12
    5     **p_p_int = 25;          //相当于*p_int=25,对x赋值,x=25  
    6     p_int = 12;              //
    7     *p_p_int = 3;            //p_int=3
    8     p_p_int = 27;            //

    数据结构:是内存中组织数据的一种方式。了解了更多数据结构后,你会逐渐学会从数据角度思考程序,学会思考如何组织数据。

     递归,是重复的函数调用。与循环相类似,但功能更强大。                                          

     1 //一个递归例子
     2 
     3 #include<iostream>
     4 using namespace std;
     5 
     6 void printNum(int num)
     7 {
     8     cout << num;
     9     if (num < 9)
    10     {
    11         printNum(num + 1);
    12     }
    13     cout << num;
    14 }
    15 int main()
    16 {
    17     printNum(1);
    18 
    19     cin.get();
    20     return 0;
    21 }
    22 //***************************************************
    23 
    24 //***************************************************

    输出结果:123456789987654321

  • 相关阅读:
    Codeforces Round #368 Div. 2
    TXT文件去除多余空行
    #4247. 串
    #4322. 字符串游戏(strgame)
    #4214. 谢特
    #4155. 咱们去烧菜吧
    #4350. 「十二省联考 2019」字符串问题
    #4349. 「十二省联考 2019」异或粽子
    #4303. 跳蚤
    #4302. 魔法咒语
  • 原文地址:https://www.cnblogs.com/skylover/p/7050734.html
Copyright © 2011-2022 走看看