数组和指针

本文详细介绍了如何在 C/C++ 中动态分配一维、二维和三维数组,包括栈和堆上的分配方式,以及一维和二维指针数组的内存分配问题。重点突出指针在数组操作中的应用及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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字节,指针的类型表明了变量读取的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值