Po prostu upewniam się, że rozumiem tę koncepcję poprawnie. Za pomocą operatora * tworzę nową zmienną, której przydzielono miejsce w pamięci. Aby nie niepotrzebnie duplikować zmiennych i ich wartości, operator & jest używany do przekazywania wartości metodom i takim, i faktycznie wskazuje na oryginalną instancję zmiennej, w przeciwieństwie do tworzenia nowych kopii ... Czy to prawda? Jest to oczywiście płytkie zrozumienie, ale chcę się tylko upewnić, że nie pomieszam ich. Dzięki!Jaka jest różnica między operatorem * i operatorem w programie c?
17
A
Odpowiedz
38
Niezupełnie. Mylicie kod *
występujący w nazwie typu (używanej do definiowania zmiennej) za pomocą operatora *
.
int main() {
int i; // i is an int
int *p; // this is a * in a type-name. It means p is a pointer-to-int
p = &i; // use & operator to get a pointer to i, assign that to p.
*p = 3; // use * operator to "dereference" p, meaning 3 is assigned to i.
}
11
Do znalezienia adresu zmiennej używa się &
. Więc jeśli masz:
int x = 42;
i (na przykład) komputer przechowywane x
w miejscu adresu 5
, &x
byłoby 5
. Podobnie można sklep ten adres w zmiennej o nazwie wskaźnik:
int* pointer_to_x = &x; // pointer_to_x has value 5
Gdy masz wskaźnik można dereference to za pomocą operatora *
przekonwertować go z powrotem do typu, który wskazuje :
int y = *pointer_to_x; // y is assigned the value found at address "pointer_to_x"
// which is the address of x. x has value 42, so y will be 42.
4
Po powiązaniu zmiennej z operatorem * ta zmienna zawiera adres pamięci.
Po sparowaniu z operatorem & zwraca adres, pod którym zmienna jest trzymana.
Jeśli miał
int x = 5; //5 is located in memory at, for example, 0xbffff804
int *y = &x; //&x is the same thing as 0xbffff804, so y now points to that address
zarówno x
i *y
przyniesie 5
Powiązane problemy
- 1. jaka jest różnica między operatorem kropki a operatorem rozdzielczości zakresu
- 2. Jaka jest różnica między operatorem Java equals() i C++ ==?
- 3. Jaka jest różnica między isEqualToString a operatorem == w Objective C?
- 4. Różnica między operatorem globalnym a operatorem członkowskim
- 5. Jaka jest różnica między operatorem "=" i "==" w Bash?
- 6. Jaka jest różnica między operatorem zwarć Perla (lub, i) a (||, &&)?
- 7. Jaka jest różnica między operatorem "+" w ggplot2 i operatorem "%>%" w magrittr?
- 8. W tensorflow jaka jest różnica między tf.add a operatorem (+)?
- 9. Jaka jest różnica między operatorem publikowania i multiemisji w programie rxjs 5?
- 10. Jaka jest różnica między jawnym obciążeniem/magazynem a zwykłym operatorem = a operatorem T?
- 11. LINQ Między operatorem
- 12. Różnica między operatorem lambda i -> w Rubim
- 13. Dlaczego sizeof jest operatorem?
- 14. bitowe I w Javie z operatorem „&”
- 15. Jaka jest różnica między `-Contains` i` -In` w PowerShell?
- 16. Jaka jest różnica między operatorem >>> w Javie i JavaScript?
- 17. Różnica między operatorem potęgowania ECMAScript 2016 a Math.pow()
- 18. Jaka jest różnica między "||" operator i funkcja concat w Oracle?
- 19. Różnica między operatorem kropki a pełnoprawnym nazwanym wywołaniem w Clojure
- 20. C# Różnice między operatorem ==, StringBuilder.Equals, Object.Equals i Object.ReferenceEquals
- 21. Kolejność wywołań RxJava2 z wykonalnym operatorem i operatorem
- 22. Jaka jest różnica między | i || w MATLAB?
- 23. niepodpisany przelew z operatorem modulus w C
- 24. Jaka jest różnica między C# i .NET?
- 25. C: Sprawa przełącznik z operatorem logicznym
- 26. Wybierz skrzynkę z operatorem "Jest"
- 27. laravel Eloquent jak korzystać między operatorem
- 28. Jaka jest różnica między XOR i NOT-EQUAL-TO?
- 29. Jaka jest różnica między? : i ||
- 30. Jaka jest różnica między $ i $$?
Czy na pewno nie jesteś coraz mylić z C++, który używa i jako operator odniesienia, jak również adres-of operator? –
Możliwe dupe: http://stackoverflow.com/questions/2667420/ – sbi
Jako operatory, '*' i '&' są odwrotne, jak '++' i '-', lub '+' i '-' lub '*' i '/'. – outis