繁体   English   中英

C typedef用于解引用固定大小的2D数组的指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM