为什么C语言不支持列主数组? [关闭]

2024-01-11

这只是一个随机的设计选择还是有任何特定原因 C 支持行优先而不是列优先?我知道 Fortran 使用列专业。那么这些设计选择背后的原因(如果有的话)是什么?


根据我对问题的一些评论以及其他一些答案的回答(以及我自己的一些反思 - 但值得注意的是对 C 语言设计过程没有任何了解......),我相信这是一个仅仅基于的选择做出这个决定的人(里奇?)自己需要什么。

如果将多维数组的索引解释为矩阵索引,则将第一个索引作为行索引,将第二个索引作为列索引(即列优先结构)是有意义的。如果您的应用程序需要大量线性代数或其他矩阵密集型计算,那么以一种能够有效地一次遍历一列的方式存储这些结构也是有意义的,因为许多算法都这样做。因此,Matlab 和 Fortran 等编程语言受益于列优先——它使得编写考虑矩阵和矩阵算法的高效代码变得更加容易。

另一方面,C 比例如 C 更通用。 Matlab 或 Fortran。如果你不打算使用int**专门针对matrices,哪个索引是哪个并不重要。看起来很自然,如果a is an int**, then a[2]返回一个int* and a[2][1]返回一个int- 您“深入挖掘”多维数组。为了效率,我们现在只关心是否选择a[2]并且想要迭代它,它应该被有效地缓存。作为程序员,你是否关联并不重要a[2]使用矩阵行或矩阵列 - 我们不使用矩阵!

因此,没有强有力的理由(我可以从我的头脑中看出)C 是列主的。在实施第一个版本时,它可能只是easier使其成为行优先 - 也许是因为底层低级语言(汇编程序?)已经是行优先 - 就是这样。

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

为什么C语言不支持列主数组? [关闭] 的相关文章

  • Web 应用程序框架:C++ 与 Python

    作为一名程序员 我熟悉 Python 和 C 我正在考虑编写自己的简单 Web 应用程序 并且想知道哪种语言更适合服务器端 Web 开发 我正在寻找一些东西 它必须是直观的 我认识到 Wt 存在并且它遵循 Qt 的模型 我讨厌 Qt 的一件
  • File.ReadAllLines 或流读取器

    我们可以使用以下方式读取文件StreamReader http msdn microsoft com en us library vstudio system io streamreader或通过使用File ReadAllLines ht
  • 如何使用 C# 调用 REST API?

    这是我到目前为止的代码 public class Class1 private const string URL https sub domain com objects json api key 123 private const str
  • 如何使用 DesignData 帮助开发 Metro 应用程序?

    我一直在 Windows Phone 应用程序中愉快地使用 DesignData 我希望使用它来帮助在 VS2012 Blend for VS 中的 Metro 风格应用程序中可视化设计 我已经尝试过希望显而易见的方法
  • const_iterators 更快吗?

    我们的编码指南更喜欢const iterator 因为它们比正常的要快一点iterator 当您使用时 编译器似乎会优化代码const iterator 这真的正确吗 如果是的话 内部到底发生了什么使得const iterator快点 编辑
  • 使用 INF 文件 C++ 以编程方式安装驱动程序

    这里有人可以告诉我如何安装第 3 方设备驱动程序吗 如果提供了所有必需的文件 即 inf 文件 sys 等 则以编程方式进行 这 该解决方案应运行的最低操作系统是Windows2000 我尝试复制 inf文件放入Win文件夹 INF文件夹和
  • 如何设置cookie值?

    我正在执行以下操作来设置 cookie 值 HttpCookie mycookie new HttpCookie mycookie mycookie Value value1 Case sensitivity mycookie Expire
  • 阻止用户取消选择列表框中的项目?

    我有一个列表框 里面有很多项目 用户可以单击某个项目来编辑其内容 如何防止用户取消选择所有项目 即 用户不应该无法选择任何内容 您的情况缺少一个案例 即清除列表后 您将选择列表中不再存在的项目 我通过添加额外的检查来解决这个问题 var l
  • 将数字 n 拆分为 k 个不同数字的总和

    我有一个数字 n 我必须将它分成 k 个数字 使得所有 k 个数字都是不同的 k 个数字的总和等于 n 并且 k 最大 例如 如果 n 为 9 则答案应为 1 2 6 如果 n 为 15 则答案应为 1 2 3 4 5 这就是我尝试过的 v
  • 访问结构向量

    我有一个结构 struct OutputStore int myINT string mySTRING 如果我创建一个 OutputStore 类型的数组 如下所示 OutputStore OutputFileData new Output
  • C++头文件问题

    我在处理类时尝试了一些 C 代码 这个问题出现在我身上 并且让我有点烦恼 我创建了一个包含类定义的头文件和一个包含实现的 cpp 文件 如果我在不同的 cpp 文件中使用此类 为什么要包含头文件而不是包含类实现的 cpp 文件 如果我包含类
  • 将数组显式衰减为指针

    最简洁 最惯用的方式是什么明确地将数组衰减为指针 例如 考虑您需要能够指导 SFINAE 或明确过载的情况 template
  • 如何将此 Boost ASIO 示例应用到我的应用程序中

    我已经阅读了很多 ASIO 示例 但我仍然对如何在我的应用程序中使用它们感到困惑 基本上 我的服务器端需要接受超过100个连接 客户端 这部分是通过使用线程池 通常每个CPU核心2 4个线程 来完成的 为简单起见 我们假设只有一个连接 为了
  • 在 C++17 中编译具有非固定基础类型的 constexpr 从 int 静态转换为作用域枚举的未定义行为

    我想知道以下内容是否应该在 C 17 中编译 enum class E A B constexpr E x static cast
  • 定义一个断言,即使定义了 NDEBUG,该断言也有效

    我想定义一个assert与标准相同的宏assert 3 http man7 org linux man pages man3 assert 3 html调用 但它不会被预处理器删除NDEBUG被定义为 这样的呼唤 让我们称之为assert2
  • 具有两个表的谓词构建器

    A Party可以有一个或多个Contact对象 我想选择全部Parties谁的街道名称包含特定关键字 如果我只想搜索Party我可以使用下面的代码 但我如何扩展它来搜索Contact public IQueryable
  • 在 Visual Studio C++ 资源编辑器中导入 png 文件

    我希望能够在 Visual Studio 资源编辑器中导入 png 文件 以便能够在不同的其他项目中使用嵌入的资源 有解决办法吗 我知道它适用于位图 但我对 png 感兴趣 因为即使在较低格式 16x16 或 32x32 上也可以使用 透明
  • 当前线程中的单例

    我的单身人士如下 public class CurrentSingleton private static CurrentSingleton uniqueInstance null private static object syncRoo
  • 使用 Powershell 或 C# 获取 Azure“文件和文件夹”作业状态

    我一直在尝试找到一种方法来获取在 AzureRM 中运行的几个客户上运行的 文件和文件夹 备份作业的状态 可以在 AzureRm 门户中手动找到状态 恢复服务保管库 gt 作业 gt 备份作业 使用powershell不显示任何作业信息 G
  • 我应该为每个 Web 请求使用静态缓存的 ResourceManager 还是一个新实例?有关系吗?

    创建新的 NET 对性能 或其他 有何影响 如果有 ResourceManager根据每个请求new ResourceManger myResourceType FullName myResourceType Assembly 与在 Des

随机推荐

  • Python 列表([]) 和 []

    from cs1graphics import from math import sqrt numLinks 50 restingLength 20 0 totalSeparation 630 0 elasticityConstant 0
  • 使用 bootstrap 3.37 header 下拉菜单并将 jquery 翻译为 knockoutJS

    我正在查看这篇文章 以在我的 mvc5 knockoutjs 解决方案中应用带有下拉菜单的标题菜单 https jdmdigital co news codex bootstrap 3 secondary dropdown menu htt
  • “gem update --system 在 Debian 上被禁用”错误

    当我尝试更新 ruby gems 通过运行 gem update system 时 出现此错误 ERROR While executing gem RuntimeError gem update system is disabled on
  • 每个目标都有不同的故事板本地化

    我有一个有 3 个目标的项目 每个目标只需要支持一种语言 但每个目标的语言都不相同 目前我有 目标 1 西 目标 2 西 目标 3 点 我的大部分字符串都在 Localized strings 文件中 我只是为每个目标指定一个不同的文件 然
  • Xamarin 表单中的轮播视图自动滑动

    我的页面底部有一个轮播视图 现在我希望图像每 2 秒自动滚动一次 我已经实现了相同的并且工作正常 Device StartTimer TimeSpan FromSeconds 2 gt SlidePosition if SlidePosit
  • 关于硬链接

    有人可以解释一下为什么内核不允许我们建立到目录的硬链接吗 无论是因为它打破了文件系统有向无环图结构的规则 还是因为其他原因 如果允许的话还会出现什么其他并发症 回到第 7 版 或版本 7 UNIX 时代 没有系统调用mkdir 2 and
  • 如何从具有字典列表的 json 将数据集加载到 pytorch torchtext.data.TabularDataset 中?

    我有一个字典列表如下 text The Fulton County Grand tags AT NP TL NN TL JJ TL text The jury further said tags AT NN RBR VBD 每个字典的每个值
  • 正则表达式查找一对周围数字不同的相邻数字

    我想找出是否有两个相邻的相同数字 并且这对数字前后的数字不同 例如 123456678 应该匹配 因为有一个双 6 1234566678 不应匹配 因为不存在具有不同周围数字的双精度数 12334566 应该匹配 因为有两个 3 到目前为止
  • 在 Gradle 构建脚本中访问 Teamcity 构建号

    如何在 Teamcity 执行的 Gradle 脚本中访问内部版本号和 VCS 结账号 在蚂蚁我可以使用 build number and build vcs number 1 分别 谢谢 这些只是 TeamCity 为 Ant Gradl
  • Java simpledateformat 英国时间

    我使用简单的日期格式来允许用户指定他们发送数据的时区 DateFormat df new SimpleDateFormat yyyy MM dd HH mm ss z 这工作正常 例如 df parse 2009 05 16 11 07 4
  • Inspired Lua程序在电脑和计算器上的不同

    I am attempting to create a simple quadratic formula program for my TI Nspire CX CAS I seem to have everything correct a
  • 如何向 JQuery 弹出窗口添加换行符

    如何在弹出窗口内容中添加换行符 换行符标记和换行符都不起作用 这就是我正在尝试的 foo hover function this popover title Bar content Line 1 br Line 2 n Line 3 pop
  • Flash逆向工程[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么我们不能一次从 System.in 读取一个字符?

    下面的程序打印标准输入上写入的每个字符 但仅在写入换行符后才打印 至少在我的系统上 public class Test public static void main String args throws java io IOExcepti
  • Spring Security如何在不登录的情况下更新用户详细信息

    我是 Spring Security 的新手 我已经实现了 UserDetails 来创建我自己的用户 我还有我的自定义 userDetailsS ervice 现在一切正常 但我需要在不登录的情况下更新有关我的用户的信息 如何做到这一点
  • WooCommerce REST API - 按修改日期过滤订单

    我正在使用 WooCommerce REST API http woocommerce github io woocommerce rest api docs introduction http woocommerce github io
  • 带有伪造霍夫曼表的 jpeg 可以恢复吗?

    我有一个在任何程序中都无法打开的 JPEG 在 Ubuntu 图像查看器中打开会产生 把照片传过去convert产生类似的结果 convert corrupt jpg out jpg convert im6 Bogus Huffman ta
  • 如何在 .NET 应用程序中使用 C++ 项目?

    我是一名普通的 NET 开发人员 旨在将 C 库集成到 NET 项目中 我有一些想法 但由于我总体上是 C 新手 所以我不知道我正在尝试使用的技术的局限性 C 项目本质上是一个快速声音渲染器 可以使用一堆不同的后处理技巧来播放多轨音频文件
  • self.tabBarController 为 NULL

    我创建了一个如下所示的 UITabBarController 并推送了一个 navigationController 但我现在无法设置选项卡栏项目的标题等 因为 tabbarcontroller 为 NULL 请你告诉我哪里出了问题 UIT
  • 为什么C语言不支持列主数组? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi