[英]C typedef for dereferencing a pointer to a fixed-size 2D array
如果我有一个指向固定大小的2D数组的指针,例如
char (*p)[4][4] = get_array();
有什么办法可以将变量a
声明为
a = *p;
并具有a
适当的是类型char[4][4]
因此,我可以使用a[i][j]
而不是(*p)[i][j]
如果p
是指向4
字符的数组的指针,则*p
必须是4
字符的数组的数组(类型char [4][4]
)。 不幸的是,您不能真正将该类型用于其他变量(仅在定义此类数组时),甚至不能使用typedef
。 那是因为您不能分配给数组,而只能复制到它们。
幸运的是,当数组自然衰减到指向其第一个元素的指针时,一个4
字符的数组将随后衰减到一个指向4
字符的数组的指针。
也就是说,表达式*p
等效于char (*)[4]
,必须为a
的类型:
char (*a)[4];
a
是类型char [4][4]
的数组。
有什么办法可以将变量a声明为
a = *p;
不,您不能像这样初始化数组,并且数组不可分配。
相反,您应该执行以下操作:
memcpy (a, *p, sizeof(a));
然后可以使用a[i][j]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.