当前位置: 首页 > 知识库问答 >
问题:

将T[][]转换为T*

裴理
2023-03-14

我只是想说清楚,我的意思是这样的-

int arr[10][10];
int p = *((int*) arr);

另外,如果我访问第一个数组以外的元素,也会遇到同样的问题,即(INT*)arr+13。它会属于越界访问的条款吗?因为我是在第一个数组的边界之外访问的。

共有1个答案

常翰
2023-03-14

演员阵容本身没问题。使用指向一个子数组中的元素的指针来访问另一个子数组中的元素可能确实是有问题的:虽然操作在较低的级别上定义得很清楚(所有操作都正确对齐,没有填充,类型匹配,...),但我对C标准的印象是,它的措辞允许边界检查实现符合标准。

但是请注意,线性遍历多维数组仍然是允许的,因为指向子数组(通常不能取消引用)的指针也碰巧是指向下一个子数组的第一个元素的指针。这种思想导致的是指针算术是非相联的:

我的理解是,像(int*)arr+13这样的表达式涉及未定义的行为1,但是如果将其分为两个步骤(int*)arr+10)+3可能会定义良好。

 类似资料:
  • 问题内容: 有没有简单的方法可以将Transact-SQL转换为MySQL? 我正在尝试转换股票代码和公司名称的数据库档案。 问题答案: 简短的回答: 否 中等答案: MAYBE 长答案: 这取决于TSQL中的内容以及要投入的时间和精力。 TSQL不是MySQL方言的子集。因此,存在一些没有MySQL转换的TSQL。但是,两种语言之间的重叠非常重要,并且在某种程度上转换只是语法问题。 这不是一个新

  • 基本上,我想读取Apache Ignite上的查询返回的所有值,该查询返回一个IgniteCursor。 我想以非阻塞的方式读取光标。 我可以写: 也许我错过了什么? 换句话说,有一种方法可以使用“异步非阻塞IO”从Ignite获取记录列表?

  • 问题内容: 我知道我可以使用,但是,我需要窥视对象的(可能不是第一个参数),以确定要转换的特定类。本质上,我想做的是这样的: 问题答案: 首先将JSON解析为JObject。然后使用LINQ to JSON 查找属性。然后根据值切换并使用进行强制转换:

  • 问题内容: 情况是您有一个以秒(XXX.XX)为单位的值,并且您想使用T-SQL转换为HH:MM:SS。 例子: 121.25 s变为00:02:01.25 问题答案: 您要乘以毫秒,因为小数部分将被丢弃。 如果您希望不带日期部分,可以使用样式为114的CONVERT

  • 所以我有一个名为ExpandableArrayList的类,它实现了ListInterface。这个ArrayList填充了Item类型的实例(它表示我的泛型类型T)。class Item实现Comparable,并具有以下属性:String itemNo、String Item Name、double price和int quantity。 一个名为CheckLimit的方法应该检查列表中的任何

  • 问题内容: 我有bigInt:我需要将其转换为。 我尝试了几种方法来做到这一点: 和: 当我发现上面的代码与like:一起使用时,通过我的bigInt我收到以下错误: 消息8115 …将表达式转换为数据类型datetime的算术溢出错误。 有谁知道如何解决吗? 问题答案: 以下是一些可以将bigint计算为日期时间的计算。 结果: 稍作改动,这些日期时间就可以被截断或四舍五入。