1

我开始阅读一些关于 C 中指针的文章,但我有一个我不明白的例子。以下代码的输出应该是什么......?

    main()
     {
      char far *s1 ,*s2;
      printf("%d,%d",sizeof(s1),sizeof(s2));
     }

输出-4,2

据我说,两个 sizeof() 函数返回的值都应该是 4,因为远指针有 4 字节地址。

但解决方案手册中的答案是 4,2。谁能解释一下??谁能解释一下>???

4

1 回答 1

6

这和写作一样

char far *s1;
char *s2;
the "far" is not distributed across all variables, e.g.
char far *s1, ch;

far 在普通字符 ch 上毫无意义。

因此 s2 不是“远”指针,而是作为“近”指针处理,它在您的目标中为 16 位宽。

于 2013-07-14T20:02:39.613 回答