C中的以下声明是什么意思:
char far *far *scr;
char far far** scr;
从我收集的第一个语句是指向远的类型指针的指针? 第二个是指向远类型指针的指针?
答案 0 :(得分:1)
far
不是C中的标准关键字,因此其确切含义和语义取决于编译器。通常,它适用于分段存储器架构,其中“远”指针可指向当前段之外,而“近”指针仅在段内。如果你需要担心这些事情,现在你可能正在进行嵌入式开发。
至于语法示例,far
限定符的位置因编译器而异。有些编译器使用它类似于const
(即,当它引用该指针时它位于*
的右侧),但许多流行的编译器将它放在左侧,就像它引用数据而不是指针。在您的示例中似乎就是这种情况,这会使第一个(char far *far *
)指向远指针的远指针。但是第二个(char far far**
)将是一个非限定(接近,如果这是默认值)指向“远”指针。我个人并不知道编译器有这样一个概念,并猜测其他far
是冗余的还是错误的,但是,如上所述,这是非标准的。也许某些编译器会将“巨大”指针实现为far far
...