Wskaźnik to typ danych, którego wartość odnosi się bezpośrednio (lub „wskazuje”) do innej wartości przechowywanej w innym miejscu w pamięci komputera przy użyciu jego adresu.
Słyszałem, że powiedzenie, że włączenie zerowych referencji w językach programowania jest „błędem miliarda dolarów”. Ale dlaczego? Jasne, mogą powodować wyjątki NullReference, ale co z tego? Każdy element języka może być źródłem błędów, jeśli zostanie użyty nieprawidłowo. A jaka jest alternatywa? Przypuszczam, że zamiast powiedzieć to: Customer c = Customer.GetByLastName("Goodman"); // …
C ma wskaźniki, a Java ma tak zwane referencje. Mają pewne wspólne cechy w tym sensie, że wszystkie na coś wskazują. Wiem, że wskaźniki w C przechowują adresy, na które wskazują. Czy referencje przechowują również adres? Czym się różnią, tyle że wskaźnik jest bardziej elastyczny i podatny na błędy?
Dlaczego mistrz C Dennis Ritchie wprowadził wskaźniki w C? I dlaczego inne języki programowania, takie jak VB.NET lub Java lub C #, je wyeliminowały? Znalazłem kilka punktów w Google i chcę też wysłuchać twoich komentarzy. Dlaczego eliminują koncepcje wskaźników we współczesnych językach? Ludzie mówią, że C jest podstawowym językiem, a …
Czy podczas własnych studiów (na własną rękę lub na zajęcia) miałeś moment „ah ha”, kiedy w końcu naprawdę zrozumiałeś wskazówki? Czy masz jakieś wyjaśnienie dla początkujących programistów, które wydaje się szczególnie skuteczne? Na przykład, kiedy początkujący po raz pierwszy spotykają wskaźniki w C, mogą po prostu dodawać &s i *s, …
Zasadniczo rozumiem, jak używać wskaźników, ale nie wiem, jak najlepiej ich używać w celu lepszego programowania. Jakie są dobre projekty lub problemy do rozwiązania przy użyciu wskaźników, dzięki czemu mogę je lepiej zrozumieć?
Czytałem skądś, że podczas używania C ++ zaleca się nie używać wskaźników. Dlaczego wskaźniki są tak złym pomysłem, gdy używasz C ++. Dla programistów C przyzwyczajonych do używania wskaźników, jaka jest lepsza alternatywa i podejście w C ++?
Czy ktoś może szczegółowo wyjaśnić, jak dokładnie działa wirtualna tabela i jakie wskaźniki są powiązane, gdy wywoływane są funkcje wirtualne. Jeśli faktycznie są wolniejsze, czy możesz pokazać, że czas potrzebny na wykonanie funkcji wirtualnej jest dłuższy niż normalne metody klasowe? Łatwo jest zapomnieć o tym, jak / co się dzieje, …
W C ++ jest wiele wskazówek, ale szczerze mówiąc za około 5 lat w programowaniu w C ++ (szczególnie w Qt Framework) używam tylko starego surowego wskaźnika: SomeKindOfObject *someKindOfObject = new SomeKindOfObject(); Wiem, że istnieje wiele innych „inteligentnych” wskaźników: // shared pointer: shared_ptr<SomeKindofObject> Object; // unique pointer: unique_ptr<SomeKindofObject> Object; // …
To trochę „jeden megabajt powinien wystarczyć każdemu”, ale ... 64-bitowa płaska przestrzeń adresowa zapewnia do 4,3 miliarda razy więcej miejsca niż 32-bitowa przestrzeń adresowa. To 17 179 869 184 GiB. Oczywiście przejście z 8 bitów na 16 bitów było dość szybkie (oglądam rzeczy po nastolatku w latach 80., ignorując te …
Wiem, że wskaźniki przechowują adresy. Wiem, że typy wskaźników są „ogólnie” znane na podstawie „typu” danych, na które wskazują. Jednak wskaźniki nadal są zmiennymi, a adresy, które przechowują, muszą mieć „typ” danych. Według moich informacji adresy są w formacie szesnastkowym. Ale nadal nie wiem, jaki „typ” danych to ten szesnastkowy. …
Jaka jest twoja ulubiona metoda deklarowania wskaźnika? int* i; lub int *i; lub int * i; lub int*i; Proszę wyjaśnić dlaczego. patrz także: http://www.stroustrup.com/bs_faq2.html#whitespace
W językach takich jak C i C ++, używając wskaźników do zmiennych, potrzebujemy jeszcze jednej lokalizacji pamięci do przechowywania tego adresu. Czy to nie jest narzut pamięci? Jak to jest kompensowane? Czy wskaźniki są używane w aplikacjach o krytycznym czasie niskiej pamięci?
Zauważyłem coś dziwnego po skompilowaniu tego kodu na moim komputerze: #include <stdio.h> int main() { printf("Hello, World!\n"); int a,b,c,d; int e,f,g; long int h; printf("The addresses are:\n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x \n %0x", &a,&b,&c,&d,&e,&f,&g,&h); return 0; } Wynik jest następujący. Zauważ, …
W C ++ argument odwołania do funkcji pozwala funkcji na wywołanie odwołania do czegoś innego: int replacement = 23; void changeNumberReference(int& reference) { reference = replacement; } int main() { int i = 1; std::cout << "i=" << i << "\n"; // i = 1; changeNumberReference(i); std::cout << "i=" << …
Niedawno zacząłem uczyć się C ++ i jak większość ludzi (zgodnie z tym, co czytałem) mam problemy ze wskaźnikami. Nie w tradycyjnym tego słowa znaczeniu, rozumiem czym one są i dlaczego są używane oraz w jaki sposób mogą być przydatne, jednak nie rozumiem, w jaki sposób przydatne byłyby zwiększanie wskaźników, …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.