通过将指针传递给c中的函数来创建二维数组

2023-11-30

因此,我阅读了数十个将 2D 数组指针传递给函数以在函数中获取/更改该数组的值的示例。但是是否可以在函数内部创建(分配内存)。像这样的事情:

#include <stdio.h>

void createArr(int** arrPtr, int x, int y);

int main() {

    int x, y;       //Dimension
    int i, j;       //Loop indexes
    int** arr;      //2D array pointer
    arr = NULL;
    x=3;
    y=4;

    createArr(arr, x, y);

    for (i = 0; i < x; ++i) {
        for (j = 0; j < y; ++j) {
            printf("%d\n", arr[i][j]);
        }
        printf("\n");
    }
    _getch();    
}

void createArr(int** arrPtr, int x, int y) {
    int i, j;       //Loop indexes
    arrPtr = malloc(x*sizeof(int*));
    for (i = 0; i < x; ++i)
        arrPtr[i] = malloc(y*sizeof(int));

    for (i = 0; i < x; ++i) {
        for (j = 0; j < y; ++j) {
            arrPtr[i][j] = i + j;
        }
    }    
}

忘记指针到指针。它们与二维数组无关。

正确做法:如何在 C 中正确设置、访问和释放多维数组?.

使用指针到指针是错误的众多原因之一:为什么需要使用 type** 来指向 type*?.

如何正确执行此操作的示例:

#include <stdio.h>
#include <stdlib.h>


void* create_2D_array (size_t x, size_t y)
{
  int (*array)[y] = malloc( sizeof(int[x][y]) );

  for (size_t i = 0; i < x; ++i) 
  {
    for (size_t j = 0; j < y; ++j) 
    {
      array[i][j] = (int)(i + j);
    }
  }

  return array;
}

void print_2D_array (size_t x, size_t y, int array[x][y])
{
  for (size_t i = 0; i < x; ++i) 
  {
    for (size_t j = 0; j < y; ++j) 
    {
      printf("%d ", array[i][j]);
    }
    printf("\n");
  }
}


int main (void)
{
  size_t x = 5;
  size_t y = 3;

  int (*arr_2D)[y];

  arr_2D = create_2D_array(x, y);

  print_2D_array(x, y, arr_2D);

  free(arr_2D);

  return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过将指针传递给c中的函数来创建二维数组 的相关文章

  • WebClient读取错误页面的内容

    我有一个加载页面内容的应用程序 我使用 WebClient 类 即使服务器返回 404 500 等错误 我也需要检索内容 我需要这样的东西 WebClient wc new WebClient string pageContent try
  • 为什么派生类不使用基类的operator=(赋值运算符)?

    以下是实际问题的简化版本 而不是打电话Base operator int 代码似乎生成了一个临时的Derived对象并复制它 既然函数签名似乎完美匹配 为什么不使用基本赋值运算符 这个简化的示例没有显示任何不良影响 但原始代码在析构函数中有
  • 在运行时设置 DataGridView 上的 DataFormatString?

    是否可以在运行时设置 ASP NET DataGridView 中的列或单元格的 DataFormatString 属性 这应该有效 BoundField priceField grid Columns 0 as BoundField pr
  • C# 中附加/分离事件处理程序的不同方式有什么区别

    我的问题有两个部分 首先 我们可以通过以下两种方式附加事件处理程序 myObject MyEvent new EventHandler MyHandler myObject MyEvent MyHandler 据我了解 这两者是等价的 在第
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • 将成员函数作为参数传递/c++

    我想用 C 实现一个类b可以通过封装该迭代器类型的成员集进行某种迭代 喜欢 b object for each x do function f so 函数 f会得到每个人的x成员并做任何事情 比方说 void function f x me
  • .net Framework (.net 4.0) 中定义 Base 3 数字的类

    我正在寻找一些可以用来定义 3 基数 三进制数 的类 有什么我可以在 net 框架中使用的东西或者我需要写一些东西吗 谢谢你的帮助 您可以使用解析Convert ToInt32 s base http msdn microsoft com
  • 使用 openssl 检查服务器安全协议

    我有一个框架应用程序 它根据使用方式连接到不同的服务器 对于 https 连接 使用 openssl 我的问题是 我需要知道我连接的服务器是否使用 SSL 还是 TLS 以便我可以创建正确的 SSL 上下文 目前 如果我使用错误的上下文尝试
  • Microsoft.Graph - 如何从具有不同用户名的共享邮箱发送?

    我目前正在将使用 SMTP 的服务代码移植到 Office 365 通过 SMTP 我可以使用 发件人 字段在来自共享收件箱的邮件上设置不同的用户名 同时保留共享电子邮箱地址 这似乎无法通过 Office 365 运行 其工艺流程为 客户填
  • JavaScript:预期的赋值或函数调用,却看到了一个表达式

    我正在使用 JSHint 来确保我的 JavaScript 是 严格的 但我收到以下错误 预期是赋值或函数调用 但看到的是表达式 关于以下代码 var str A B C D var data var strArr str split fo
  • 是什么原因导致 Linq 错误:此方法无法转换为存储表达式?

    我有一堆具有相同 select 语句的 Linq to Entity 方法 所以我想我会很聪明 并将其分离到它自己的方法中以减少冗余 但是当我尝试运行代码时 我得到了以下内容错误 该方法不能转化为 商店表达式 这是我创建的方法 public
  • 将 bignum 类型结构转换为人类可读字符串的有效方法是什么?

    我有一点问题 为了增长我的 C 知识 我决定尝试实现一个基本的 bigint 库 bigint 结构的核心将是一个 32 位整数数组 选择它们是因为它们适合寄存器 这将允许我在数字之间进行操作 这些操作将在 64 位整数中溢出 这也将适合寄
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 是否有任何不使用公共虚拟方法的正当理由? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何不使用公共虚拟方法的正当理由 我在某处读到我们应该避免使用公共虚拟方法 但我想向专家确认这是否是有效的声明 对于良好且稳定的 API
  • 为什么 C# 接口名称前面加上“I”

    这种命名约定背后的基本原理是什么 我没有看到任何好处 额外的前缀只会污染 API 我的想法与康拉德一致response https stackoverflow com a 222502 9898与此相关的question https sta
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • matlab中求和函数句柄

    Hi我试图对两个函数句柄求和 但它不起作用 例如 y1 x x x y2 x x x 3 x y3 y1 y2 我收到的错误是 对于 function handle 类型的输入参数 未定义函数或方法 plus 这只是一个小例子 实际上我实际
  • 如何使用 ASP.NET Web 表单从代码隐藏中访问更新面板内的文本框、标签

    我在更新面板中定义了一些控件 它们绑定到中继器控件 我需要根据匿名字段隐藏和显示用户名和国家 地区 但问题是我无法以编程方式访问更新面板中定义的控件 我如何访问这些控件 我也在网上查找但找不到很多参考资料 下面是来自aspx页面和 cs页面
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标

随机推荐

  • 通过服务器请求防止 Android 盗版

    我正在开发一个需要服务器来完成大部分繁重工作的应用程序 我想防止盗版客户端向该服务器发送请求 有没有办法在请求中发送一些标识符 以便我的服务器可以询问 Android Market 是否有人拥有该 id 确实购买了该应用程序 我该怎么做呢
  • 使用 WIF 和 jquery ajax 请求时 ASP.NET MVC 3 中的会话 Cookie 过期处理

    我的项目我正在使用WIFI 但这对于这个问题的上下文来说并不重要 您可以使用处理身份验证的替代框架 问题是关于执行 ajax 请求时处理身份验证失败的问题 尽管如此 就我而言 我编写了继承自的自定义服务器逻辑ClaimsAuthentica
  • 带有 Nodejs 本机模块的 AWS Lambda

    最近我开始使用 AWS Lambda 函数 我的 Nodejs 应用程序运行良好 直到我尝试使用web3 js包裹 添加行后 const Web3 require web3 我收到 HTTP 端点的 内部服务器错误 错误 并在 CloudW
  • Java 正则表达式 - 只包含一个空格的表达式

    我想将所有表达式与一个空格匹配 目前 我正在使用 s s s 不过 这似乎不是一个很好的方法 为什么不 很好 只是有点过于复杂 S s S
  • 在 XML 文件中搜索元素值

    在给定的 XML 文件中 我尝试使用以下命令搜索字符串是否存在XPath在爪哇 然而 即使字符串在那里 我的输出总是显示为 否 希望这里有人能指出我可能做错了什么 XML 文件
  • WIX 工具集包含多个文件

    我们有一个包含多个文件和文件夹的文件结构 我是 wix 工具集的新手 不太确定如何包含所有这些文件并保留目录结构 我知道 我可以添加这样的文件
  • 如何在MySQL中生成唯一的id?

    我正在使用 PHP 和 MySQL 编写脚本 我想要一个 唯一 id 由字符串组成 大写和小写 带数字的字母 例如 gHYtUUi5b 我发现 PHP 中有很多函数可以生成这样的数字 但我担心如何确保 id 是唯一的 UPDATE uuid
  • iOS (Cordova) 上出现键盘时如何调整 Web 视图大小

    在 Phonegap 3 7 0 上 当键盘出现在 iPhone 或 iPad 上时 Web 视图不会调整大小 并且键盘最终位于页脚上方 我希望缩小网络视图 以便页脚保持可见 有没有什么办法解决这一问题 我在这里看到了很多问题 实际上却达到
  • 事务应该在 .NET 还是 SQL Server 中处理?

    我进入了一个使用 NET C 作为前端 SQL Server 2008 作为后端的应用程序 我发现事务总是在 C 代码中处理 似乎这个项目有一条不成文的规则 我们不应该在存储过程中使用事务 我个人认为事务应该在存储过程中处理 因为它可以更好
  • 什么java设计模式可以避免强制转换数据实体

    我目前正在我的应用程序中实现类似异步的事件队列 它被设计为这样工作 一个组件对某些用户输入做出反应并将事件放入队列 另一个 侦听器 正在检查是否存在特定类型的事件在队列内部并运行它自己的业务逻辑 可以有各种事件类型 如 USER MOUSE
  • 如何将 Flutter 永久添加到 Mac 中的路径

    我知道有很多类似的答案 但是我已经检查过它们 观看了相关视频并尝试了无数次 我将 flutter 路径导出到 bashprofile 并按屏幕截图所示保存 但是如果我关闭终端并尝试使用 flutter 命令 例如flutter versio
  • C++ 中的“foreach”循环如何知道数组的长度

    我正在看下面的例子http www cplusplus com doc tutorial arrays 我不知道第二个 for 循环是如何工作的 for循环如何知道数组何时结束 如果它能弄清楚为什么第一个循环不使用类似的方法 我的印象是数组
  • 如何使用 codeigniter 将表单值插入 mysql 数据库[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是 Codeigniter 的新手 如何使用 codeigniter 将表单值存储在
  • 将 JButton 图标向左对齐并保持文本居中

    我想设置一个 JButton 使其图标左侧对齐 而文本居中 我已经找到了如何让其中一个位于左侧 另一个位于右侧 或两者处于同一设置 但我找不到我要找的东西 当然我总是可以重新定义paint方法 但我正在寻找一种更精简的方法来做到这一点 您可
  • 将 get-content 放入 html 电子邮件的数组中

    html部分 html htm html text computername username text html out file c scripts temp Report html 我在 html 变量中有 html 语言 当我决定更
  • 使用 htaccess 进行移动重定向

    我有一个网站叫 www website org 我有一个移动网站 名为 m website org 我想使用 htaccess 自动将主网站 URL 重定向到移动版本 但是 移动版本上有一个链接指向主网站 称为 www website or
  • 数据框中行值的平均值,不包括 R 中的最小值和最大值

    我得到以下数据框 df 此处显示的片段 H2475 H2481 H2669 H2843 H2872 H2873 H2881 H2909 E1 94 470 26 481 15 120 18 490 16 189 11 422 14 886
  • 如何知道两个表情符号是否会显示为一个表情符号?

    表情符号 由2个unicodeScalars U 1F44D U 1F3FC组成 如何将其识别为 1 个 显示 表情符号 因为它将在 iOS 上如此显示 Swift 4 Xcode 9 更新 从 Swift 4 开始 表情符号序列 被视为单
  • 如何防止android应用程序中的choosePrivateKeyAlias对话框?

    我有一个 Android 应用程序 可以在网络视图中调用安全网站 webview 检索证书并将其提供给网站 我必须使用KeyChain choosePrivateKeyAlias this keyChainAliasCallback nul
  • 通过将指针传递给c中的函数来创建二维数组

    因此 我阅读了数十个将 2D 数组指针传递给函数以在函数中获取 更改该数组的值的示例 但是是否可以在函数内部创建 分配内存 像这样的事情 include