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

*(&arr+1)-arr如何确定数组大小

程树
2023-03-14
int arr[] = { 3, 5, 9, 2, 8, 10, 11 };      
int arrSize = *(&arr + 1) - arr;
std::cout << arrSize;

我不知道这是怎么运作的。所以任何人都可以帮我。

共有1个答案

王嘉木
2023-03-14

该程序具有未定义的行为。

这样,您的实现就假设在声明的int[7]之后还有第二个int[7],并从指针算法发明的虚拟数组的位置中减去存在的数组的位置。

 类似资料:
  • 我不知道这是怎么回事。所以任何人都可以帮我做这件事。

  • 当我像下面这样写的时候 我可以得到这个输出。 输出 我认为test[0]=100->test[0]^1=101,但它不是。 你能解释一下有什么不同吗?

  • Arr 类别是一系列与阵列协作的辅助函式。 is_multi($arr, $all_keys = false) is_multi 方法检查传递的阵列是否是多维阵列。 静态 是 参数 参数 预设 描述 $arr 必要 要检查的阵列。 $all_keys false 检查所有元素都是阵列。 回传 布林 範例 // 单一阵列 $arr = array('one' => 1, 'two' => 2); e

  • 本文向大家介绍实例分析Array.from(arr)与[...arr]到底有何不同,包括了实例分析Array.from(arr)与[...arr]到底有何不同的使用技巧和注意事项,需要的朋友参考一下 写在开头: 在正文开始之前我们先说明一下类数组(估计大家一定不会陌生) 类数组的特点 1.有索引 2.有长度 3.是个对象 4.能被迭代 特点说明:对于类数组的特点前三个我就不做说明了哈,主要就是最后

  • 对于那些不知道_. allKeys(obj)做什么的人,这里有一个片段 因此,它返回传递给它的对象的属性/方法名称数组。 这应该给我: 属性名称:firstname 值名称:John ------ 属性名称:lastname 值名称:Adams ------ 相反,它给了我: 属性名称:firstname 值名称:un定义 ------ 属性名称:lastname 值名称:un定义 ------

  • 计算数组长度有一个众所周知的模式: 此模式适用于静态数组和恒定大小的自动数组。它也适用于C99中的可变长度数组。 我想应用类似的想法来计算动态数组的大小(以字节为单位): 这比 更好不是指实际的数组元素类型。因此,它不需要代码的读者知道类型。 然而,我不清楚表达式是否会导致未定义的行为。随着它的扩展: 如果为,则结果表达式有问题: 根据C99标准: (C99,6.3.2.3p3):“具有值 运算符