2012-07-22 9 views
19

Powiel możliwe:
What are the differences between pointer variable and reference variable in C++?
What's the meaning of * and & when applied to variable names?"&" sens po zmiennej typu

Próbując zrozumieć znaczenie "&" w tej sytuacji

void af(int& g) 
{ 
    g++; 
    cout<<g; 
} 

Jeśli nazywasz to functio n i pass nazwa zmiennej - będzie działać tak samo jak normalnie void(int g). Wiem, że podczas pisania &g oznacza to, że podajesz adres zmiennej g. Ale co to oznacza w tej próbce?

+0

Można znaleźć te informacje w sposób szczegółowy, postać już odpowiedział [tutaj] (http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-variable-in-c). – chris

+0

zachowuje się jak normalnie? czy próbowałeś 'af (v); af (v); '? –

+7

To referencja, a jeśli nie wiesz, co to jest, zdecydowanie zalecamy przeczytanie książki w języku C++. –

Odpowiedz

22

Oznacza to, że przekazujesz zmienną przez odniesienie.

W rzeczywistości, w deklaracji typu, oznacza to odniesienie, podobnie jak:

int x = 42; 
int& y = x; 

deklaruje odniesienie do x, zwany y.

15

& oznacza, że ​​funkcja przyjmuje adres (lub odniesienia) do zmiennej, zamiast wartości zmiennej.

Na przykład zwrócić uwagę na różnicę między tym:

void af(int& g) 
{ 
    g++; 
    cout<<g; 
} 

int main() 
{ 
    int g = 123; 
    cout << g; 
    af(g); 
    cout << g; 
    return 0; 
} 

a to (bez &):

void af(int g) 
{ 
    g++; 
    cout<<g; 
} 

int main() 
{ 
    int g = 123; 
    cout << g; 
    af(g); 
    cout << g; 
    return 0; 
} 
+6

"Funkcja & oznacza, że ​​funkcja akceptuje adres" ... ummm ... nie ... –

+0

Tylko wskazanie [void] (http: // stroustrup .com/bs_faq2.html # void-main). – chris

+0

'void main()' jest w porządku. Nic złego w tym. Oczywiście zakładam, że jest to kod niekompletny (on też nie "#include"), więc wokół jego 'void main' będzie' 'przestrzeń nazw lulz {...} '. –