如何使用函数创建二维数组?

2024-02-10

我正在尝试定义一个二维数组,但我想在函数中执行它,

这是我的代码:

int** createArray( int columns, int rows)
{   
    int** array[rows];
    for(int i = 0; i < rows; i++)
    {
        array[i] = new int*[columns];
    }

    for(int i = 0; i <columns; i++)
    {
        for(int j = 0; j < rows; j++)
        {
            array[i][j] = 0;
            std::cout <<array[i][j];
        }
        std::cout<<"\n";
    }
    return *array;
}

int main()
{
    
int **myArray = createArray(3,5);


for(int k =0; k < 5; k++)
{
    if( (myArray[0][k] == 0) && (&myArray[1][k] == 0)) //segmentation fault
    {
        myArray[2][k] = 10; //segmentation fault
    }

delete[] myArray;
}

但它会导致错误,这些错误可以被视为行中的注释。我是 C++ 新手,不知道如何解决这个问题。

非常感谢


Prefer std::vector超过手动内存管理:

std::vector<std::vector<int>> createArray(int columns, int rows)
{   
    return std::vector<std::vector<int>(rows, std::vector<int>(columns));
}

int main()
{
    int COLUMNS = 5;
    int ROWS = 3;
    auto myArray= createArray(COLUMNS, ROWS); 

    /*
    Do stuff
    */

    //std::vector handles delete on it's own, no need to clean up
}

如果您无法使用std::vector由于某种原因,这是在堆上初始化二维数组的一种方法:

int** createArray(int columns, int rows)
{   
    int** arr = new int*[rows];
    for(int i = 0; i < rows; ++i) 
    {
        arr[i] = new int[columns];
    }

    return arr;
}

int main()
{
    int COLUMNS = 5;
    int ROWS = 3;
    int** myArray= createArray(COLUMNS, ROWS); 

    /*
    Do stuff
    */

    //you need to a delete for every new and delete[] for every new[]
    for(int i = 0; i < rows; ++i)    
    {
        delete[] myArray[i];
    }
    delete[] myArray;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用函数创建二维数组? 的相关文章

  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • 格式说明符%02x

    我有一个简单的程序 include
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • strlen() 编译时优化

    前几天我发现你可以找到编译时strlen使用这样的东西 template
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • Unity3D - 将 UI 对象移动到屏幕中心,同时保持其父子关系

    我有一个 UI 图像 它的父级是 RectTransform 容器 该容器的父级是 UI 面板 而 UI 面板的父级是 Canvas 我希望能够将此 UI 图像移动到屏幕中心 即画布 同时保留父级层次结构 我的目标是将 UI 图像从中心动画
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • 任何人都可以清楚地告诉如何在不使用像 这样的预定义函数的情况下找到带有小数值或小数值的指数吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 例如 2 0 5 1 414 所以想要 我是 c 的新手 所以请解释简单的逻辑 如果不是复杂的逻辑也足够了 在数学中 从整数取幂到实数
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助

随机推荐

  • 为 FileResult 设置 ETag - MVC 3

    MVC 3 RTM 我有一个返回文件 image jpeg 的操作 我试图为文件设置 ETag 但没有成功 etag 没有出现在标头中 我尝试过 Response Cache SetETag 和 Response AppenderHeade
  • 为什么处置 StreamReader 会使流不可读? [复制]

    这个问题在这里已经有答案了 我需要从头到尾读取流两次 但是下面的代码会抛出一个ObjectDisposedException Cannot access a closed file例外 string fileToReadPath
  • 在 Python 之外读取 numpy 数组

    在最近的一次question https stackoverflow com questions 2721521 fastest way to generate delimited string from 1d numpy array我询问
  • clojure——本地覆盖“+”、“*”等运算符的正确方法

    重写 这样的方法的正确方法是什么 现在我有 defn x y replacement x y 但这会导致命令行上出现警告 WARNING already refers to clojure core in namespace
  • 在 Android 上保存 OAuth 客户端凭据的位置

    我有一个通过 OAuth 安全性与 WebAPI 交互的 Android 应用程序 为了获取访问令牌 我需要在请求标头中发送 OAuth 凭据 即客户端 ID 和客户端密钥 我的问题是 我应该在哪里保存这两个值 客户端 ID 和客户端密钥
  • 如何使用arduino从sim900模块的RTC读取日期和时间数据?

    include SIM900 h include
  • XML 架构创建错误 - JAXB 正在做什么?

    我正在开发一个涉及简单 Web 服务的项目 并且已经有很多little https stackoverflow com questions 2195034 server side xml validation with cxf webser
  • 使用 git tfs 合并两个 TFS 分支

    我在用着git tfs 我想知道是否可以使用合并两个 TFS 分支git tfs 我有两个分支 MyCompany Dev 和 MyCompany Release 3 3 Release 3 3 源自 Dev 分支 两者都使用 git tf
  • 在 CakePhp 测试中,testAction() 函数在 debug() 上返回 null

    我试图学习如何在 CakePhp 中使用单元测试 我正在尝试编写控制器测试 我读到了有关 testAction 和 debug 函数的信息 但它对我不起作用 我的意思是 测试方法通过了 但 debug 返回 null 因为 testActi
  • 如何将 MPI 派生数据类型用于 3D 数组?

    我想编写一个适用于 3D 矩阵的并行代码 其中每个进程都有自己的子矩阵 但为了完成其工作 它们需要一些有关相邻进程子矩阵的信息 只是边界平面 我通过点对点通信发送这些信息 但我知道对于大型矩阵来说这不是一个好主意 因此我决定使用派生数据类型
  • Linux:如何在fork上将文件描述符标记为不可继承? [复制]

    这个问题在这里已经有答案了 是否可以在子进程中将特定文件描述符标记为不可继承或关闭它fork 被调用 不会 所有文件描述符都是在 fork 中继承的 但是 您可以将 fd 设置为在 exec 上关闭 方法是使用fcntl fd F SETF
  • 双指针如何用于二维矩阵?

    我正在通过实施康威的生命游戏来尝试 C 语言 我正在尝试动态构建两个网格 int矩阵 一个用于当前 一个用于下一代 因此在确定下一代的样子后 我只需交换指针 起初 我绝望地尝试定义指向网格的指针 例如int grid 您不能使用第二组括号作
  • 如何对 pandas 列中的列表执行 One Hot Encoding?

    假设我有一个数据框 其中一列是一个列表 未知值和长度 例如 df pd DataFrame messageLabels Good Other Bad Bad Terrible 我遇到了这个解决方案 但这不是我正在寻找的 如何最好地将包含列表
  • IE 11 找不到运行 Applet 的 Java 插件

    我使用 Java Applets 构建了应用程序 它在带有 IE 9 的 Windows 7 上运行良好 现在我正在尝试将其移动到另一个环境 有互联网浏览器 11 运行我正在使用的小程序Oracle 部署工具包脚本 http docs or
  • 为什么我们应该使用DataTemplate.DataType

    当我创建资源时 我们指定其中的数据类型
  • 源代码中字符串文字的字符编码问题

    logstring Invoke Command ComputerName filesServer ScriptBlock param logstring grp Klassenbuchordner KB grp Gruppe Gruppe
  • 使用 webpack 定义全局变量

    是否可以使用 webpack 定义一个全局变量来产生如下结果 var myvar 我看到的所有示例都使用外部文件require imports jquery file js 有几种方法可以处理全局变量 1 将变量放入模块中 Webpack
  • android中变量的全局声明

    我是android开发的新手 我正在通过SAX解析器解析xml文件并将解析的数据存储到字符串中 现在我需要在另一个类中使用该字符串 所以我需要知道如何在新类中调用该解析器 提前致谢 我总是创建一个包含所有全局变量的类 并将其称为 Const
  • OpenCV 中的照明标准化

    我正在做一个人脸识别项目 我有不同光照的图片 所以我需要进行光照标准化 我读了一篇声称可以进行照明归一化的论文 本文描述了以下功能和值 1 伽玛校正 伽玛 0 22 高斯差分 DOG 过滤 sigma 0 1 sigma 1 2 3 对比度
  • 如何使用函数创建二维数组?

    我正在尝试定义一个二维数组 但我想在函数中执行它 这是我的代码 int createArray int columns int rows int array rows for int i 0 i lt rows i array i new