1

C のポインターに関する記事をいくつか読み始めましたが、理解できない例が 1 つあります。次のコードの出力は何になるはずですか..??

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

OUTPUT-4,2

私によると、far ポインターには 4 バイトのアドレスがあるため、両方の sizeof() 関数によって返される値は 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 に答える