将动态二维数组传递给函数

2024-03-02

我正在用 C 编写一个 n x n 矩阵乘法程序,其中 a[][] 和 b[][] 是输入,x[][] 是输出。 a、b 和 x 已分配,但我不确定如何正确地将指针传递给乘法函数。下面是我想做的事情的概述

    void multiplication(float a, float b, float x, int n);

    void main() {

        float **a, **b, **x;
        int n;          // size of arrays (n x n)

        multiplication(a, b, x, n);
    }

   void multiplication(float a, float b, float x, int n) {

      // function

   }

你要void multiplication(float *a, float *b, float *x, int n);。请注意,通常您应该使用size_t对于索引和数组大小,以及double作为您首选的浮点类型,除非您有特定的原因使用float.

Each of a, b and x指向连续的浮点值,您将需要使用以下方式取消引用它们a[n * x + y].

除此之外,C99 还引入了各种有趣的优化可能性,在我所知道的任何编译器中,您几乎都不能依赖所有这些可能性:

  • GCC 中的可变长度数组 http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html
  • XL C/C++ V7.0 中的数组(适用于 AIX) http://publib.boulder.ibm.com/infocenter/comphelp/v7v91/index.jsp?topic=%2Fcom.ibm.vacpp7a.doc%2Flanguage%2Fref%2Fclrc03ary.htm

有了这些,这样的事情应该是可能的:

void multiplication(size_t len; // <- semicolon not a mistake
    double a[len][restrict const len],
    double b[len][restrict const len],
    double c[len][restrict const len]);

这种迂腐的构造将向编译器表明数组的长度是相同的,它们是二维的,并且大小由运行时的调用代码指示。此外,所有数组都是可缓存的,因为它们不可以alias http://developers.sun.com/solaris/articles/cc_restrict.html另一个。

人们只能梦想 C 继续先进,C99 仍然没有得到完全支持,而且许多其他改进 http://plan9.bell-labs.com/sys/doc/comp.pdf还没有成为主流。

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

将动态二维数组传递给函数 的相关文章

随机推荐

  • Zend / Apache2:多次请求 url 时出现 302 Found

    我正在编程一个REST API with Zend框架 当多次调用 url 时 例如每秒 1 个请求 1000 次 大约0 2 的案例而不是得到200 OK作为我得到的回应302 Found 所以重定向到不同的页面 这是整个服务器响应 30
  • 最近执行的 SQL 不在 V$SQL 中

    什么情况下选择查询不会出现在V SQL视图中 例如 如果我运行这个 select findme from T 然后立即运行 select from v sql where sql text like findme 在什么情况下我不会返回任何
  • 如何在WebGL中实现类似隧道的动画? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在WebGL中实现类似隧道的动画
  • 如何将多个 csv 文件导入 MySQL 数据库

    有没有办法同时将多个csv文件导入MySQL数据库 某种批量导入 我在 Mac OSX 上运行 MAMP 服务器 我有 185 个 csv 文件需要导入到 MySQL 表中 我可以使用 phpMyAdmin 的导入选项卡单独导入它们 但这需
  • 隐藏评级栏的阴影

    定制RatingBar显示我的影子 如何隐藏这个阴影
  • jQuery 选择器

    我试图从源代码中获取这一点 即 a href img src wwv flow file mgr get file p security group id 1343380920146312332 p flow id 222 p fname
  • Postgres SQL 状态:22P02

    我需要在 Postgres 中运行以下查询 select left file date 10 as date lob name devicesegment sum conversion units numeric as units from
  • 水晶报表子报表分页符

    我是水晶报表新手 我一直在尝试解决这个子报表分页问题 我想我知道该报告的作用 但我不知道如何解决这个问题 很难解释 所以我上传了这些图片 My main report My sub report which is in the Detail
  • 在 int 上使用扩展方法

    我正在阅读有关扩展方法的内容 并尝试使用它们 看看它们是如何工作的 我尝试了这个 namespace clunk public static class oog public static int doubleMe this int x r
  • 在 Heroku 环境中使用 ResourceUtils.getFile 从类路径读取文件

    我正在 Heroku 中运行 Spring Boot 应用程序 使用 Maven 来管理构建生命周期 在应用程序的初始化阶段 我想读取打包到 JAR 文件中的文件 为了设法获取文件的内容 我正在使用 Spring 实用程序类Resource
  • UILongPressGestureRecognizer 不工作

    我想检测UILongPressGestureRecognizer为了UIWebView点击并按住 这样当我长按近3秒时 就会出现以下内容if条件应该是True那么只有 if navigationType UIWebViewNavigatio
  • 如何阻止会话

    当导航到 Facebook 社交网络时 我发现我可以打开 2 个帐户 1 个在 Firefox 中 另一个在 Internet Explorer 中 或者可能是多个帐户 这不太好 因为 Facebook 政策只允许同时打开一个会话 启动会话
  • 将 Devexpress GridControl 动态添加到 C# Windows 应用程序

    我想动态添加 Devexpress GridControl 在运行时我想显示过滤器行 另外 我希望在具有动态创建的 GridControl 的同一窗体上有一个按钮 单击该按钮时 它应该显示网格控件的过滤器对话框弹出窗口 提供的示例可以满足您
  • 读取 bash 中具有默认值的变量

    我需要在 bash 脚本中从终端读取一个值 我希望能够提供用户可以更改的默认值 Please enter your name Ricardo 在此脚本中 提示是 请输入您的姓名 默认值为 Ricardo 光标将位于默认值之后 有没有办法在
  • 使用 Ghostscript 作为 x11 查看器(gs x11 视口定位)?

    我已经知道了Ghostscript 前端 http en wikipedia org wiki Ghostscript Front ends观众 但我想知道如何gs本身可以用来查看PDF文档吗 我能得到的最接近的是明确指定x11窗口作为输出
  • 当有匹配时,使用 MERGE 后如何获取标识值?

    假设我有一个带有身份字段的表 如果记录尚不存在 我想在其中插入一条记录 在下面的示例中 我检查存储在 Field1 中的值是否已存在于表中 如果没有 我插入一条新记录 表的定义 MyTable MyTableId int Identity
  • 解码字符串中的“=C3=A4”

    我尝试了很多不同的方法来正确显示我的字符串 但我无法使其工作 这就是字符串 f C3 A4hrt German word f hrt 我的文件以 utf 8 编码 该文件在 Joomla 中加载 我都尝试过 geschichte gt in
  • Elastic BeanStalk EC2 实例的日志耗尽了整个磁盘空间

    我有一个 Elastic BeanStalk 环境 在 1 个 EC2 实例上运行我的应用程序 当我最初配置环境时 我添加了负载均衡器 但从那时起我将其设置为仅使用 1 个实例 在容器内运行的应用程序显然会产生大量日志 几天后它们会耗尽整个
  • 如何使用 React hook 检测 Next.js SSR 中的窗口大小?

    我正在使用 Next js 构建一个应用程序反应日期 https github com airbnb react dates 我有两个组件日期范围选择器组件和DayPickerRangeController成分 我想渲染日期范围选择器当窗口
  • 将动态二维数组传递给函数

    我正在用 C 编写一个 n x n 矩阵乘法程序 其中 a 和 b 是输入 x 是输出 a b 和 x 已分配 但我不确定如何正确地将指针传递给乘法函数 下面是我想做的事情的概述 void multiplication float a fl