我读了很多关于这个主题的回复,但我仍然无法理解。请理解我正在学习过程中。
有人告诉我,向量只不过是它的第一个元素地址,因此是一个二维向量。
那么,为什么如果我通过指针传递 2D 向量,我就会失去使用索引的能力。
int vec[10][10] = { 1, 2, 3, 4 };
int *v = vec;
Run Code Online (Sandbox Code Playgroud)
为什么我不能说
int a = v[1][1]
Run Code Online (Sandbox Code Playgroud)
就像我会做的那样
int a = vec[1][1]
Run Code Online (Sandbox Code Playgroud)
if v,那是一个指向int, 的指针,而vec, 那是一个指向int, 的指针,那么它们不是完全相同的东西,同一个对象吗?
我读到
int (*v)[N] = vec;
Run Code Online (Sandbox Code Playgroud)
其中N是列数。但这对于初学者来说似乎是一件超级棘手的事情。
为什么是这样?
编辑:
我的大脑想到了这个解释,int (*vec)[N]解释了指向向量 10 的指针的int含义。这里是。
鉴于我的理解,在二维数组中,指向第一个元素的指针是指向N元素数组的指针,这是我给自己的解释。
如果 lhs ofint *var = &int必须从右到左读取,变成“ varis a pointerto int”,那么我期望int [N] …
我在一个据称微不足道的俄罗斯方块控制台游戏代码中发现了这一点。
wchar_t *screen = new wchar_t[];
unsigned char *pField;
.
.
.
screen[someMathIndex] = L" ABCDEFG=#"[pField[someOtherMathIndex]];
Run Code Online (Sandbox Code Playgroud)
方括号前面的 wchar 字符串是什么意思?我什至无法找到一种方法来谷歌它。你能不能把我重定向到这个奇怪的东西的一些资源。