关于C中的指针

about Pointers in C

本文关键字:指针 关于      更新时间:2023-10-16

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

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

输出-4,2

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

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

这与编写相同

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

far在正常字符ch上没有意义。

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