[C++] new一个m行n列的二维数组

今天做一道矩阵运算的题的时候,直接使用常量直接定义了二维数组的大小,印象里好像学过用指针new一个可以自定大小的二维数组,经过学习之后有了以下思考。

int main()
{
	int M = 4, N = 3; // 自定义二维数组大小,4行3列
	int **a = new int*[M] // 令指针a指向一个元素个数为M个的由指针组成的一维数组
	
	for(int i = 0; i < M; i++){ // 使一维数组a中的每个指针都指向一个元素个数为N的数组
		a[i] = new int[N]
	}

	for(int i = 0; i < M; i++){ //将二维数组中每个元素赋值为1
		for(int j = 0; j < N; j++){
			*(*(a + i) + j) = 1; // 也可以写成a[i][j]
		}
	}

	for (int i = 0; i < M; i++) {  // 先将一维数组a中的指针所指向的每个一维数组内存释放
		delete[] a[i];
	}
	delete[] a; // 再释放一维数组a的内存
	
	return 0;
}

其中星(星(a + i) + j)中的星(a + i)为取数组a中的第i个元素的值,这个值是一个指针,也就是二维数组中第i行的第一个元素的地址,故星(a + i) + j就是第i行第j列的元素的地址,所以星(星(a + i) + j)就是第i行第j列的值了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cheesberry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值