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字节,指针的类型表明了变量读取的方式。
时间: 2024-11-24 07:03:27