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

    1.动态分配一维数组

    int *p = (int *)malloc(sizeof(int)*10); 
    //或者int * p = new int[10];

    2.动态分配二维数组 2 X 5

    int *p = (int *)malloc(sizeof(int)*10);
    //或者int *p = new int[10];
    int (* pp)[5] = (int (*)[5])p;

    3.动态分配三维数组 12 = 3(面) x 2(行) x 2(列)

    int *p = (int *)malloc(sizeof(int)*12);
    //或者 int *p = new int[12]
    int (* pp)[2][2] = (int (*)[2][2])p;

    考虑下面的指针数组的内存分配问题

    a.一维指针数组

    1.数组在栈上
    for (int i = 0; i<10; i++)
    {
    	b[i] = new int;
    }
    for (int j = 0; j<10; j++)
    {
    	delete b[j];
    }	 
     // 2.数组在堆上
     int ** p = new int * [10]; // 不能写成 new (int *) [10];
    for (int i = 0; i<10; i++)
    {
    	b[i] = new int;
    }
    for (int j = 0; j<10; j++)
    {
    	delete b[j];
    }
    delete []p;//重要

    b.二维指针数组

    int *b[4][5]; // 10个指针数组,内容为指针。
    // 1.数组在栈上
    
    // 2.数组在堆上
    int **p = new int * [20];
    int* (* pp)[5] = (int* (*)[5])p; // 指向二维指针数组的指针


    32位下指针永远4字节,指针的类型表明了变量读取的方式。

  • 相关阅读:
    apollo使用场景2
    我问问
    洛谷 P3979 遥远的国度
    小技巧—对拍和输出文件的比较
    洛谷 P6850 NOI
    小技巧—双向边快速枚举
    ZJOI 2008 骑士
    小技巧—指数形式的枚举
    小技巧—滚动数组
    刷题心得—背包问题的枚举方式
  • 原文地址:https://www.cnblogs.com/qhyuan1992/p/5385334.html
Copyright © 2011-2022 走看看