使用二维数组作为一维数组正确吗?可能会导致未定义的行为等等?

2024-01-27

这段代码正确吗?由于某种原因,是否不推荐使用二维数组作为一维数组?

char tab1[3][3];

for(int i = 0; i < 3; i++)
    for(int j = 0; j < 3; j++)
       tab1[i][j] = (char)i;

printf("%c", ((char*)tab1)[3]); // == tab1[1][0]

由于某种原因,是否不推荐使用二维数组作为一维数组?

当你使用tab1按照你的方式,它会退化为类型指针char (*)[3](指向 3 个数组的指针chars)。它不会衰减到char*.

您不能将其用作char*没有显式地转换它。

回复:这段代码正确吗?

它的定义很好,因为tab1在你的代码中,&tab1, &tab1[0], and &tab1[0][0]即使它们都是不同的类型,也指向内存中的同一位置。

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

使用二维数组作为一维数组正确吗?可能会导致未定义的行为等等? 的相关文章

  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 使用 numpy 在 python 中执行最大方差旋转

    我正在研究矩阵的主成分分析 我已经找到了如下所示的组件矩阵 A np array 0 73465832 0 24819766 0 32045055 0 3728976 0 58628043 0 63433607 0 72617152 0 5
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐

  • java.lang.ClassNotFoundException:org.springframework.boot.SpringApplication 与 maven-jar-plugin

    我是 Spring 和 Maven 的新手 我正在尝试运行一个简单应用程序的 jar 但收到以下错误 java jar target gs rest service 0 0 1 SNAPSHOT jar Exception in threa
  • iOS 14 中 UIBarButtonItem 是否不再支持accessibilityLabel?

    Update 此错误已在 iOS 14 5 中修复 我将以下类嵌入到UINavigationController class ViewController UIViewController override func viewDidLoad
  • 如何在 C# 中生成随机命名的文本文件?

    我必须创建一个循环来生成一个 5 个随机选择的字母字符串 然后在该名称下创建一个文本文件 比如说 C 我将如何做到这一点 生成名称并在目录中创建文件 我想我必须从 ascii 代码中挑选 5 个随机数 将它们添加到一个数组中 然后将它们转换
  • 如何在 Xcode 中链接动态库?

    我目前正在 Qt 中开发一个程序 它使用库 libqextserialport 1 dylib 我构建它并在 x 代码中运行 它返回 dyld Library not loaded libqextserialport 1 dylib Ref
  • 创建数组时出现系统 OutOfMemoryException

    我得到一个SystemOutOfMemoryException创建数组时 然而length我的阵列does not exceed Int32 MaxValue 这是代码 请不要评判该代码 它不是我的代码 至少有 7 年历史 Dim myFi
  • GNU find:什么时候应用默认操作?

    Debian 8 的 find 命令的手册页显示 如果整个表达式不包含除 prune 或 print 之外的任何操作 print 对整个表达式为 true 的所有文件执行 那么为什么这些输出不同 mkdir p test foo test
  • 可变字段不应该是“公共静态”

    我收到下面一行的 sonarQube 错误 有专家建议如何解决这个问题吗 提前致谢 protected static final String COLUMN NAMES new String date customerNumber cust
  • 尝试编写 IRC 客户端,但很难找到有关代码和连接协议的优质资源

    我已经看过 RFC 但我仍然在挣扎 我已经用 C 编写了一个基本客户端 但找不到有关如何正确连接的文档 一旦我连接并传输NICK和USER信息 我就需要加入一个频道 如果我立即执行 JOIN 则不会发生任何事情 大概是因为太早了 我必须推迟
  • 将角度分量文件拆分为单独的文件

    我有一个角度分量 绘制组件 它有很多按钮 如绘制矩形 绘制圆形等 我正在使用 paperjs 它有助于实际绘图 我有一些已更新的常见对象 例如 我有一个 paperjs 对象 每当我绘制任何形状 无论是圆形 矩形还是任何其他形状 时 该对象
  • 使用 SAM 在本地调用 Lambda 失败/超时

    我正在尝试获取本地环境来使用 VSCode windows 运行 调试 Python Lambda 我正在使用提供的 HelloWorld 示例来掌握这一点 但我无法调用 用于设置 SAM 和调用 Lambda 的步骤 我已经安装并运行了
  • 是什么导致 MyISAM 损坏? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我听说 MyISAM 表可能会损坏 什么样的操作最有可能损坏它们以及如何安全地修复所述损坏 MySQL 文档对此非常明确 http d
  • 如何在 Javascript 中按属性数量对对象进行排序? [复制]

    这个问题在这里已经有答案了 我有一个对象 William Hill bet365 royal panda pay 0 karamba roller 0 braned 0 pay 0 betfred braned 0 并想按属性数量对其进行排
  • 如何在 Python 中将二叉树打印为节点结构

    我有一个蟒蛇代码 https 1drv ms f s Aj9lfQS8qKqwnWiXL t6pVaPHu0y将字符串数学表达式转换为二叉树并对树的节点进行排序 以便左子节点始终小于右子节点 我想按以下顺序打印二叉树 例如 考虑数学表达式
  • 任务与异步任务

    好吧 我一直在试图解决这个问题 我读过一些文章 但没有一篇提供我正在寻找的答案 我的问题是 为什么Task必须返回一个任务async Task不是吗 例如 public override Task TokenEndpoint OAuthTo
  • 使用循环通过网络抓取创建表

    我正在尝试通过网络抓取tax rates org来获取德克萨斯州每个县的平均税率 我在 csv 文件中有一个包含 255 个县的列表 我将其导入为 TX counties 它是一个单列表 我必须将每个县的 URL 创建为字符串 因此我使用
  • 处理 Hadoop SequenceFile 中的 Writables 完全限定名称更改

    我有一堆 Hadoop SequenceFiles 它们是用我编写的一些 Writable 子类编写的 我们称之为 FishWritable 这个 Writable 在一段时间内运行良好 直到我决定为了清晰起见需要对包进行重命名 所以现在
  • gensim word2vec 访问输入/输出向量

    在 word2vec 模型中 有两个线性变换 将词汇空间中的单词带到隐藏层 in 向量 然后返回词汇空间 out 向量 通常这个输出向量在训练后会被丢弃 我想知道是否有一种简单的方法可以访问 gensim python 中的输出向量 同样
  • 如何从字符向量解析 CSV 数据以提取数据框?

    R 中的 read table 和 read csv 函数用于解析包含分隔数据的文件或 URL 并生成 R 数据帧 但是 我已经有一个包含 CSV 分隔数据的字符向量 使用逗号和 n 作为列和记录分隔符 因此我不需要从文件或 URL 中读取
  • System.Web.UI.ViewStateException,无效的视图状态

    我的网站每天都会抛出以下异常 但我找不到解决方案 我在网络上做了很少的研究 这就是我到目前为止所做的 将以下选项添加到 aspx 不会解决问题 ValidateRequest 假 EnableEventValidation 假 ViewSt
  • 使用二维数组作为一维数组正确吗?可能会导致未定义的行为等等?

    这段代码正确吗 由于某种原因 是否不推荐使用二维数组作为一维数组 char tab1 3 3 for int i 0 i lt 3 i for int j 0 j lt 3 j tab1 i j char i printf c char t