Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Operacje dodawania obejmujące wskaźnik i liczbę całkowitą dają znaczące wyniki tylko wtedy, gdy operand wskaźnika adresuje składową tablicy, a wartość całkowita generuje przesunięcie w granicach tej samej tablicy. Gdy wartość całkowita jest konwertowana na przesunięcie adresu, kompilator zakłada, że tylko pozycje pamięci o tym samym rozmiarze znajdują się między oryginalnym adresem a adresem oraz przesunięciem.
To założenie jest prawidłowe dla elementów członkowskich tablicy. Zgodnie z definicją tablica jest serią wartości tego samego typu; jego elementy znajdują się w ciągłych lokalizacjach pamięci. Jednak magazyn dla wszystkich typów, z wyjątkiem elementów tablicy, nie ma gwarancji, że zostanie wypełniony przez ten sam typ identyfikatorów. Oznacza to, że wartości puste mogą występować między pozycjami pamięci, a nawet pozycjami tego samego typu. W związku z tym wyniki dodawania lub odejmowania z adresów wszystkich wartości, ale elementy tablicy są niezdefiniowane.
Podobnie, gdy odejmowane są dwie wartości wskaźnika, konwersja zakłada, że tylko wartości tego samego typu, bez wartości pustych, znajdują się między adresami podanymi przez operandy.