C/Wskaźniki - więcej: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Lethern (dyskusja | edycje)
przeniesiono z C/Wskaźniki
Lethern (dyskusja | edycje)
mNie podano opisu zmian
Linia 214:
tablica_wskaznikow[i++] = 0;
</source>
 
 
{{przypisy|przypisy=
<ref name="cast">Tak naprawdę nie zawsze można przypisywać wartości jednych wskaźników do innych. Standard C gwarantuje jedynie, że można przypisać wskaźnikowi typu void* wartość dowolnego wskaźnika, a następnie przypisać tą wartość do wskaźnika pierwotnego typu oraz, że dowolny wskaźnik można przypisać do wskaźnika typu char*.</ref>
<ref name="err">Może się okazać, że błąd nie będzie widoczny na Twoim komputerze.</ref>
<ref name="undefined behavior">To znaczy standard nie definiuje, co się wtedy stanie, aczkolwiek na większości architektur odejmowanie dowolnych dwóch wskaźników ma zdefiniowane zachowanie. Pisząc przenośne programy nie można jednak na tym polegać, zwłaszcza że odejmowanie wskaźników wskazujących na elementy różnych tablic zazwyczaj nie ma sensu.</ref>
<ref name="little endian">Ponownie przyjmując, że bajt ma 8 bitów, int dwa bajty i liczby zapisywane są w formacie little endian</ref>
}}
 
 
== Tablice wielowymiarowe ==
Linia 401 ⟶ 392:
* język [[C++]] oferuje mechanizm podobny do dynamicznej alokacji i zwalniania pamięci, ale nieco wygodniejszy - [[C++/String|klasa string]] i [[C++/Vector|klasa vector]]
* w rozdziale [[C/Typy złożone#Studium przypadku - implementacja listy wskaźnikowej|Typy złożone]] znajduje się opis implementacji listy za pomocą wskaźników. Przykład ten może być bardzo przydatny przy zrozumieniu, po co istnieją wskaźniki, jak się nimi posługiwać oraz jak dobrze zarządzać pamięcią.
 
{{przypisy|przypisy=
<ref name="cast">Tak naprawdę nie zawsze można przypisywać wartości jednych wskaźników do innych. Standard C gwarantuje jedynie, że można przypisać wskaźnikowi typu void* wartość dowolnego wskaźnika, a następnie przypisać tą wartość do wskaźnika pierwotnego typu oraz, że dowolny wskaźnik można przypisać do wskaźnika typu char*.</ref>
<ref name="err">Może się okazać, że błąd nie będzie widoczny na Twoim komputerze.</ref>
<ref name="undefined behavior">To znaczy standard nie definiuje, co się wtedy stanie, aczkolwiek na większości architektur odejmowanie dowolnych dwóch wskaźników ma zdefiniowane zachowanie. Pisząc przenośne programy nie można jednak na tym polegać, zwłaszcza że odejmowanie wskaźników wskazujących na elementy różnych tablic zazwyczaj nie ma sensu.</ref>
<ref name="little endian">Ponownie przyjmując, że bajt ma 8 bitów, int dwa bajty i liczby zapisywane są w formacie little endian</ref>
}}