gpt4 book ai didi

c - C 中的指针 : Difference in the two declarations

转载 作者:行者123 更新时间:2023-11-30 15:31:30 25 4
gpt4 key购买 nike

以下 C 语言声明的含义是什么:

char far *far *scr;
char far far** scr;

据我所知,第一个语句是一个指向far 类型的指针?第二个是指向 far 类型的指针?

最佳答案

far 不是 C 中的标准关键字,因此其确切含义和语义取决于编译器。一般来说,它适用于分段内存架构,其中“远”指针可以指向当前段之外,而“近”指针只能指向段内。如果您现在需要担心这些事情,那么您可能正在做嵌入式开发。

对于语法示例,far 限定符的位置因编译器而异。一些编译器使用它与 const 类似(即,当它引用该指针时,它位于 * 的右侧),但许多流行的编译器将其放在左侧相反,它引用的是数据而不是指针。在您的示例中似乎就是这种情况,这将使第一个 (char far *far *) 成为指向远指针的远指针。但第二个 (char far far**) 将是一个指向“far far”指针的非限定(near,如果这是默认值)指针。就我个人而言,我不知道有一个编译器具有这样的概念,并且猜测另一个 far 要么是多余的,要么是错误,但是,就像所说的,这是非标准的。也许某些编译器将“巨大”指针实现为far far...

关于c - C 中的指针 : Difference in the two declarations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24754002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com