C中的以下声明是什么意思:
char far *far *scr;
char far far** scr;
从我收集到的第一条陈述来看,是一个指向远方类型的指针?
第二个是指向far类型的指针的指针?
最佳答案
far
不是C中的标准关键字,因此其确切含义和语义取决于编译器。通常,它适用于分段存储器体系结构,其中“远”指针可以指向当前段的外部,而“近”指针只能指向该段的内部。如今,如果您需要担心此类事情,那么您可能正在进行嵌入式开发。
至于您的语法示例,far
限定符的位置因编译器而异。一些编译器使用它与const
类似(即,当它指向该指针时,它位于*
的右侧),但是许多流行的编译器将其放在左侧,就好像它引用了数据一样。而不是指针。在您的示例中似乎是这种情况,它将使第一个(char far *far *
)成为指向远指针的远指针。但是,第二个(char far far**
)将是指向“远”指针的不合格(如果是默认值,则接近)指针。我个人不知道具有这种概念的编译器,并且会猜测另一个far
是冗余的还是错误,但是,就像所说的,这是非标准的。也许某些编译器将指针实现为far far
…
关于c - C中的指针:两个声明中的差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24754002/