C:指向2d数组的指针

他保持沉默

据我了解:

int B[2][3];
int* p=B;

不起作用,因为B不是指向int的指针,而是指向3个int数组的指针。但这与B仍指向数组中的第一个元素int的事实并不矛盾。那么,为什么* p或* B不包含B [0] [0]的值?

什么东西可以成为“整数数组”的指针?指针只能指向内存中的单个地址,而不能指向所有3个地址。因此,B应该始终指向第一个元素所在的地址,而不管存储块有多长。

请解释为什么我的推理不起作用,因为我很难完全理解它。谢谢。

约翰·布林格

B是的数组int它不是指针,因此不指向任何内容。但是,在大多数情况下,它在代码中的位置B会自动转换为指向数组第一个元素的指针。该元素不是int,而是3 ints的数组

什么东西可以成为“整数数组”的指针?指针只能指向内存中的单个地址,而不能指向所有3个地址。

您不妨问一下如何拥有一个指向的指针int在我所知道的每个C系统中,ints都比一个字节宽,但是字节可以单独寻址。那么,int当其中的各个字节具有单独的地址时,您如何指向当然,对于的答案与对于int数组的答案相同:整个对象的地址是其第一个字节的地址。

因此,B应该始终指向第一个元素所在的地址,而不管存储块有多长。

确实如此,但是根据指针所指向的数据类型来解释指针。指向不同数据类型的指针甚至可以用不同的方式表示。鉴于您的声明...

int B[2][3];

...该表达式的*B计算结果为3 ints的数组,特别是B[0]B[0][0]与an的第一个字节int与整个字节相同没有什么不同int特别(*B)[1]是是的一个完全有效的替代表达式B[0][1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中交换2d数组(指向指针的指针)

来自分类Dev

如何创建指向2D指针数组的指针-C

来自分类Dev

在C中交换2d数组(指向指针的指针)

来自分类Dev

2D数组(指向指针的指针)

来自分类Dev

指向2D数组C,C ++的指针

来自分类Dev

指向C中的2D数组的指针

来自分类Dev

指向2D数组参数(C)的指针

来自分类Dev

存储指向2D数组的指针

来自分类Dev

指向2D数组的指针

来自分类Dev

2D数组不会衰减到指向指针的指针

来自分类Dev

指向指针(2D数组)的指针作为输入参数

来自分类Dev

2D数组不会衰减到指向指针的指针

来自分类Dev

在C ++中的2D数组中声明指向1D数组的指针

来自分类Dev

2D数组作为指向char数组的指针

来自分类Dev

使用指向指向数组的指针的指针打印2D数组

来自分类Dev

声明指向2D枚举数组的指针

来自分类Dev

指向未知大小的现有2d数组的指针?

来自分类Dev

* p的大小,其中p是指向2D数组的指针

来自分类Dev

如何分配指向结构的2D指针数组

来自分类Dev

使用双指针指向2D数组

来自分类Dev

指向C ++中动态分配的2D数组中的一行的指针

来自分类Dev

为什么在C ++中声明动态2D数组时使用指针指向?

来自分类Dev

如何在C ++中初始化指向动态2D数组的指针

来自分类Dev

指向指针和指向2D数组的指针之间的区别

来自分类Dev

C中的2D数组指针

来自分类Dev

指向2D数组的指针数组,读取不正确的值

来自分类Dev

用指向固定大小数组的指针分配2D数组

来自分类Dev

指向3D数组的指针C ++

来自分类Dev

在gcc 4.2.1上指向2d数组的指针的大小为8的原因是什么?