通过指针传递二维数组

2024-01-04

如何将 m 矩阵传递给 foo()?如果我不允许更改 foo() 的代码或原型?

void foo(float **pm)
{
    int i,j;
    for (i = 0; i < 4; i++)
        for (j = 0; j < 4; j++)
            printf("%f\n", pm[i][j]);

}

int main ()
{
    float m[4][4];

    int i,j;
    for (i = 0; i < 4; i++)
        for (j = 0; j < 4; j++)
            m[i][j] = i+j;

    foo(???m???);
}

如果您坚持上述声明foo, i.e.

void foo(float **pm)

以及使用内置的二维数组,即

float m[4][4];

那么唯一的方法就是让你foo与...一起工作m是创建一个额外的“行索引”数组并传递它而不是m

...
float *m_rows[4] = { m[0], m[1], m[2], m[3] };
foo(m_rows);

没有办法通过m to foo直接地。是不可能的。参数类型float **与参数类型完全不兼容float [4][4].

另外,从 C99 开始,上面的内容可以用更紧凑的方式表示为

foo((float *[]) { m[0], m[1], m[2], m[3] });

附:如果你仔细看,你会发现这与 Carl Norum 在他的回答中建议的基本上是一样的。除了卡尔是malloc- 数组内存,这不是绝对必要的。

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

通过指针传递二维数组 的相关文章

  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 强制更新 Accurev 中的工作区

    Accurev中有没有命令可以强制更新我的工作区 直接用备份文件替换本地文件 并且不关心冲突文件 修改文件等 我真的很怀念 cvs 命令 cvs update C d 根据提问 我也有类似的问题 通常我只使用以下命令 accurev upd
  • Kafka 对同一主题和分区的多个生产者进行排序

    假设我有两个生产者 ProducerA 和 ProducerB 使用单个分区写入同一主题 每个制作人都在连续编写自己独特的事件 因此 如果 ProducerA 触发了 3 个事件 然后 ProducerB 触发了 3 个事件 我的理解是 K
  • 在 angularjs 中使用 json 漂亮的打印

    我怎样才能使用这个 json 漂亮的打印 http jsfiddle net KJQ9K http jsfiddle net KJQ9K 与 AngularJS 假设我的 JsonValue 是 a 1 b foo c false fals
  • PredicateBuilder 如何工作

    C in a Nutshell 有一个名为 PredicateBuilder 的免费类 它可以逐个构建可用的 LINQ 谓词here http www albahari com nutshell predicatebuilder aspx
  • 如何从命令行从闪存驱动器运行包中包含类的java程序?

    我有一项任务 必须在闪存驱动器中提交我的代码 我在 eclipse 中完成了所有编码并获取了所有输出 我尝试通过命令行运行它并且它有效 我将所有 java 文件和类文件复制到闪存驱动器 并通过命令行再次尝试 它在我的笔记本电脑上运行 但是当
  • 如何将 arrayformula 与似乎不支持 arrayformula 的公式一起使用?

    如果提供数组作为某些函数的正常标量参数的输入 例如 INDEX GCD GOOGLETRANSLATE OFFSET QUERY IMPORTRANGE AND 它不返回数组 即使由 ARRAYFORMULA 包装 它只获取数组中第一项的值
  • 这种线程间通信的方法安全吗?

    我有3个对象 继承自QObject 每个都包含一个单独的std list 每个对象都是在主 gui 线程 没有父线程 中创建的 然后被推送到它自己的线程 使用 Qt 的QObject moveToThread 每个线程都连接到一个 GUI
  • Google 在 Github 页面上找不到 Analytics 代码片段 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 一段时间以来 我一直无法让 Google Analytics 在我生成的 Github 页面上正常工作 我使用了 Google 提供的默认代码段 但我
  • pandas ols 导入损坏?

    我试图在 pandas 0 9 1 中执行 OLS 但出现此错误 ipdb gt foo ols y df y var 1 x df x var pool False ImportError No module named scikits
  • 如何使SQL Server 2008表的检查约束仅允许某些字符?

    我想在 SQL 2008 中为表创建一个检查约束 该约束允许使用 A Z 字符 不区分大小写 数字 连字符 点 空格和下划线 下面是我现在的表情 company code 不像 A Za z0 9 它满足除连字符之外的所有上述要求 我怎样才
  • Apache Tika 无法正确检测 MIME 类型

    我试图在使用inn上传文件时检测文件类型Apache Tika如下所示 static final List
  • 在 iframe 中设置 cookie - 不同的域

    我们将我们的网站作为 iframe 集成到在不同域上运行的另一个网站中 看来我们不能设置cookie 以前有人遇到过这个问题吗 有任何想法吗 由于您的内容是从远程域加载到 iframe 中 因此它被归类为第三方cookie 绝大多数第三方
  • Dexie 数据库超时变慢

    我正在将 Dexie DB 版本 2 0 4 与 Angular 8 和 Electron 一起使用 我意识到 在数据库中输入的数据越多 对其进行的查询越多 数据库调用就会变得越慢 我是一个 Dexie 菜鸟 不确定在发出某些请求后是否有办
  • 如何从 NLTK 导入和使用停用词列表?

    我已经导入了stopwords from nltk corpus 但我得到STOPWORDS is not defined错误 下面是我的代码 import nltk from nltk corpus import stopwords Cr
  • 如何在 Javascript 中以编程方式创建控制字符?

    在 Javascript 中我可以输入 u00A3 使用字符代码获取字符 我可以通过编程来执行此操作String fromCharCode parseInt 00A3 16 但我找不到对控制角色执行相同操作的方法 我可以在源代码中输入它们
  • 错误:$controller:ctrlreg 未注册名为“{0}”的控制器

    app js function use strict angular module app ngRoute ngCookies config config config inject routeProvider locationProvid
  • 为什么数组是不变的,而列表是协变的?

    例如 为什么 val list List Any List Int 1 2 3 工作 但是 val arr Array Any Array Int 1 2 3 失败 因为数组是不变的 这个设计决策背后的预期效果是什么 因为否则它会破坏类型安
  • 使用子项目构建 Android Gradle

    我目前正在将我们的一个项目从 Maven 转换为 Gradle 文件夹结构如下 gitRoot settings gradle build gradle ProjectA build gradle src main java Librari
  • 没有这样的模块“Flutter”[重复]

    这个问题在这里已经有答案了 我已经在 TestFlight 中发布了我的应用程序 但它在启动时崩溃 当我查看崩溃日志时 它说 没有这样的模块 Flutter 我确实知道如何修复 Thanks in Advance 在终端中打开 IOS 文件
  • 通过指针传递二维数组

    如何将 m 矩阵传递给 foo 如果我不允许更改 foo 的代码或原型 void foo float pm int i j for i 0 i lt 4 i for j 0 j lt 4 j printf f n pm i j int ma