- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在对多维数组进行一些算术运算。还尝试了一些使用 C++ 的代码。但是,我的代码输出与我对不同指针和多维数组之间关系的理论理解相矛盾。
我对二维和三维数组的理解。
二维数组
3D 阵列
我对图 2 和图 4 中的 B 和 C 分别指向什么感到困惑。
二维数组上的代码
#include <iostream>
using namespace std;
int main(void){
int B[2][2] = {1, 2, 3, 4};
cout << B << endl;
cout << B+1 << endl;
return 0;
}
输出:
0x7ffec3dd9f80
0x7ffec3dd9f88
在这里,指向 int B 的指针增加了 ((1*4)+(1*4)) = 8 个单位,即指向 int (B+1) 的指针。虽然我从 Link 得到了一个解释关于二维数组中 B 实际指向的内容。它指向二维数组的第一个元素。
我的代码输出和对此的解释 Link使我困惑。二维数组中的 B 点实际上是什么?而且,如果B指向二维数组的第一个元素的地址,那么为什么当我们对它加1时B的值增加了8个单位?为什么不增加 (1*4) 个单位?
3D 数组上的代码
#include <iostream>
using namespace std;
int main(void){
int C[2][2][2] = {{
{1, 2},
{3, 4}
},
{
{1, 2},
{3, 4}
}};
cout << C << endl;
cout << C[0] << endl;
cout << C[0] +1 << endl;
cout << C[0][0] +1 << endl;
return 0;
}
输出:
0x7ffeac58d130
0x7ffeac58d130
0x7ffeac58d138
0x7ffeac58d134
C 给出整个数组的起始地址。但是,它具体指向哪一部分呢?是指向&C[0]还是&C[0][0]还是&C[0][0][0]?
cout << C[0]+1 << endl; here, C[0] is increased by 8 unit. But, if C[0] is pointing the base address of 1st 2D array inside 3D array, then it must be increased by 16 unit to get base &C[1].
cout << C[0][0] +1 << endl; here, C[0][0] is increased by 4 unit. But if it is pointing the base address of 1st 1D array of 1st 2D array inside 3D array, then it must be increased by 8 unit to get base &C[0][1].
谢谢。
最佳答案
图 1 和图 3 正确,图 2 和 4 不正确。 *B
和 B[0]
被定义为完全相同的意思。与 **B
类似和 B[0][0]
.
因此,要修复图 2,实际上复制图 1,但仅更改文本 B[0]
至 *B
等等。 B
本身指的是整个数组。图 4 同上。
B+1
定义为意义 &(B[1])
,它指的是指向您已正确标记为 B[1]
的对象的临时指针在图 1 中。
在cout << B << endl;
, 治疗 B
如说B+0
(即 &(B[0])
)。当您在需要指针的上下文中使用数组时,就会发生这种情况(创建一个临时指针,它的行为就像您编写了 &B[0]
而不是 B
一样)。该语句不输出B,它输出这个临时指针的值。
关于c++ - 多维数组的算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56371388/
我的数据库表是: author book repeat ------ ----
众所周知,我们可以简化 SELECT * FROM A WHERE X=1 OR X=4 OR X=9 如下: SELECT * FROM A WHERE X IN (1,4,9) “多维”条件是否有
我在大学时正在编写 Android 应用程序。 用户被询问必须回答的问题。 我通过服务器的 HTTP 请求/响应获取问题。它们以字符串形式传递。该字符串看起来像这样,有两个问题: (requested
我怎样才能在 C++ 中使用 vector 制作这样的表格: 65 A 66 B 67 C 我是用这样的动态二维数组完成的: int** ary = new int*[2]; for (int
运行时: if (data.custaccount.webaddress) { alert('found it'); } 我得到了错误 data.custaccount is undefined
如何按名称对对象数组进行排序。 数组构造数组的例子: object[] o = new object[items.Count+(row-exists)]; int i = 0;
如何创建二维 vector ?我知道在二维数组中,我可以这样表达: a[0][1]=98; a[0][2]=95; a[0][3]=99; a[0][4]=910; a[1][0]=98; a[1][
这是我的第一个问题。 我有很多组数据。它们中的每一个都应该在 DataFrame 中呈现。我试图通过将 DataFrame 作为多维元组的一项来实现这一点,例如: data[0][1].Glucose
有人可以建议改进我对多维 lstm 的实现吗? 它非常慢并且使用大量内存。 class MultiDimentionalLSTMCell(tf.nn.rnn_cell.RNNCell): """ Ad
我已为我在另一个基于 WPF 的应用程序中使用的 Azure 移动服务添加了到 MVC 站点的连接。 我不太熟悉如何通过移动服务在 MVC 中显示数据,找不到任何很好的示例来展示如何在页面上(例如在网
这样写对吗?有没有更好的写法呢?这与我正在使用的真实数据类似,我想确保将对象或数组正确嵌套在 JSON 文件中。 var data = [ { "department": "I
我有一个HashMap当我调用 .toString() 时,它看起来像这样: {somekey=false, anotherKey=someString, thirdKey={nestedKey=he
是否有更 pythonic 的方式来执行以下操作: import numpy as np def diagonal(A): (x,y,y) = A.shape diags = []
我有以下结构: import java.util.LinkedHashMap; ... LinkedHashMap level0 = new LinkedHashMap(); LinkedHashMa
如何访问 Arraylist 中的整数数组(两者均可调整大小)? 到目前为止我有这个代码: List vertices_passed = new ArrayList(); 我想进入vertices_p
我想知道 MiniZinc 语言中是否可以有(多维)数组的数组。 确实,我想解决 worker 的时间表问题。我的目标是检查它们是否每周至少有 1 天可用。每个 worker 都由一个整数索引,我每周
这个问题已经有答案了: how is axis indexed in numpy's array? (5 个回答) 已关闭 3 年前。 我还没有理解 NumPy 中多维数组中的轴之间的区别。你能给我解
我试图 $.post 包含一些表单数据以及数组中的一些其他数据。我可以将数组插入表单数据的其余部分,但我丢失了数组中的键,并且数据仅表示为字符串,我想我要求的是多维数组? 这是当前的响应字符串: ar
我是 numpy 新手,试图理解 here 中的以下示例。我无法理解的输出 >>> palette[image] 当索引数组 a 是多维时,单个索引数组引用 a 的第一个维度。以下示例通过使用调色板将
这个问题已经有答案了: JavaScript associative array to JSON (5 个回答) JSON.stringify doesn't work with normal Jav
我是一名优秀的程序员,十分优秀!