[英]What is variably-modified(VM) type in C
我已经多次阅读下面的文字,但我不明白。
在 C99 标准中,它定义了一个可变修改类型。
它说
完整的声明器是不属于另一个声明器的声明器。 完整声明符的结尾是一个序列点。 如果在完整声明符的声明符的嵌套序列中,有一个声明符指定了可变长度数组类型,则完整声明符指定的类型被称为可变修改。 此外,通过声明符类型派生自可变修改类型的任何类型本身都是可变修改的。
我已经理解了文本中“Furthermore”之前的所有部分。 'Furthermore'之后我不明白。 你能给我举个例子吗?
另外,根据上述 C 标准文本,“指向 VLA 类型的指针”如何是可变修改类型?
“声明符类型派生”是一个有点令人费解的术语,来自声明符而不是声明规范中定义的类型部分——即指针、数组或 function 类型。
因此,这个“Furthermore”子句的意思是,任何位于 VLA 之上的“声明符类型派生”也被可变地修改。
这种类型的一个示例是指向 VLA 类型的指针。
int (*ptr)[n];
这里, ptr
是可变修改类型,因为指针的目标类型是可变修改的。
作为旁注,C99 标准中不存在此条款。 它在 C11 标准中,因此在 C99 标准发布和标准化后的一些草案中添加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.