c++二维数组指针

c++二维数组指针定义指针指向二维数组为了方便根据用户输入动态定义二维数组的行和列 引入变量 rowsNum 行 colsNum 列 以定义 行 列的二维数组为例 introwsNum 4 intcolsNum 5 floata newfloat rowsNum for inti 0 irowsNum i a i n

1.定义指针指向二维数组

为了方便根据用户输入动态定义二维数组的行和列,引入变量rowsNum(行),colsNum(列)。

以定义5行4列的二维数组为例,

int rowsNum = 4; int colsNum = 5; float a = new float*[rowsNum]; for(int i = 0; i < rowsNum; i++) { a[i] = new float[colsNum]; }

示意图如下:

c++二维数组指针

2.二级指针内存的释放

二级指针内存的释放与内存的申请类似,具体代码如下:

for(int i = 0; i < rowsNum; i++) { delete[] a[i]; } delete []a;

注意:程序在执行完相关功能后应该释放申请过的内存。虽然程序结束时操作系统会自动清除,但对于需要长时间运行的程序来说,如果不及时释放内存的话,程序的运行效率会越来越低,严重甚至占用完大部分系统内存,影响其他程序的运行。

3.举例

例子中展示了指针指向一维数组,指针指向二维数组的用法。

#include 
   
     using namespace std; void Test(float a, float* b, const float* c){ b[0] = c[0] - 1; b[1] = c[1] - 1; a[0][0] = b[0] + c[0]; a[0][1] = b[0] - c[0]; a[0][2] = b[0] * c[0]; a[0][3] = b[0] / c[0]; a[1][0] = b[1] + c[1]; a[1][1] = b[1] - c[1]; a[1][2] = b[1] * c[1]; a[1][3] = b[1] / c[1]; } int main(){ int rowsNum = 2; int colsNum = 4; float a = new float*[rowsNum]; for(int i = 0; i < rowsNum; i++) { a[i] = new float[colsNum]; } float* b = new float[2]; float cbase[2] = {1.5, 1.2}; float* c = cbase; Test(a, b, c); cout << "a:" << endl; for(int i = 0; i < rowsNum; i++) { for(int j = 0; j < colsNum; j++) { cout << a[i][j]<< " "; } cout << endl; } cout << "b:" << endl; for(int j = 0; j < 2; j++) { cout << b[j]<< " "; } cout << endl; cout << "c:" << endl; for(int j = 0; j < 2; j++) { cout << c[j]<< " "; } for(int i = 0; i < rowsNum; i++) { delete[] a[i]; } delete []a; delete []b; return 0; } 
   




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222138.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:29
下一篇 2026年3月17日 下午4:29


相关推荐

  • 2017android面试题「建议收藏」

    2017android面试题「建议收藏」转载地址:http://www.2cto.com/kf/201702/603678.html

    2022年5月21日
    38
  • delphi教程视频教程_delphi7下载

    delphi教程视频教程_delphi7下载第二季的视频我准备了很久,当然了与其说准备不如说是懒,平时上班挺累的一到了周六日就想着睡觉,导致拖延症复发,心里想着反正看的人也不多而且不赚钱晚点儿录也没事儿,最后视频录制的事情就一拖再拖!当然了懒是一个原因,另一个原因是第二季我想录制(或者说学习)网络编程相关的知识,但是因为网络编程相关的东西太大了,就【TCP/IP详解】这一本书就有三卷之多,而每一卷都是300多页,同时Delphi更多的时候是运行在Windows平台的,那这样就离不开winsoket,当年研究win32API的结果是让我直接放弃了学习

    2025年7月7日
    5
  • [CTO札记]BlogBus机房搬迁居然在白天,而且要1天!

    [CTO札记]BlogBus机房搬迁居然在白天,而且要1天!

    2021年7月31日
    58
  • byte[]转换成String

    byte[]转换成String通过用例学习 Java 中的 byte 数组和 String 互相转换 这种转换可能在很多情况需要 比如 IO 操作 生成加密 hash 码等等 除非觉得必要 否则不要将它们互相转换 他们分别代表了不同的数据 专门服务于不同的目的 通常 String 代表文本字符串 byte 数组针对二进制数据通过 String 类将 String 转换成 byte 或者 byte 转换成 String 用 String getBytes 方法将字符

    2026年3月26日
    2
  • 无线充qi协议c语言详解,无线充电Qi协议正向通信FSK的解调设计[通俗易懂]

    无线充qi协议c语言详解,无线充电Qi协议正向通信FSK的解调设计[通俗易懂]白光磊池卿华王兆俊江昊史佳雯周天摘要:无线充电Qi协议提出发射器和接收器通过频率调制(FSK)方式进行正向通信,进而建立完整的通信状态控制。接收器可采用测宽法进行频率解调,然而由于电磁耦合变化、负载变化、载波占空比变化、测量量化等引起的误差,该方法无法满足实际应用的要求。该文针对传统测宽法抗干扰能力弱的问题,提出一种窗口滤波算法,通过参考相邻脉冲频…

    2022年6月16日
    49
  • 全息投影技术的实现_自制全息投影视频素材

    全息投影技术的实现_自制全息投影视频素材今天自己亲自动手制作了一个全息投影仪,智能手机早就具备投射出全息影像的潜质,现在Mrwhosetheboss就将这段教程上传到网上,看起来简直酷极了。

    2022年8月5日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号