2016-03-29 16 views
5

Ho letto questo post. Tuttavia, non ho potuto ottenere il significato per la seguente dichiarazione.C++ Indicizzazione array multidimensionale

Diciamo dichiaro questo:

Declaration 1: int jimmy [HEIGHT][WIDTH]; 

    Accessing 1: jimmy[n][m] 

Declaration 2: int jimmy [HEIGHT * WIDTH]; 


Accessing 2: jimmy[n*WIDTH+m] 

Dichiarazione 1 e l'accesso 1 e 2 Dichiarazione e l'accesso a 2 sono gli stessi src.

Tuttavia, qual è il significato jimmy [n, m]? Ho scritto il codice che mi dà l'indirizzo. Impossibile ottenere informazioni utili. Qualcuno può dire cosa significa?

+2

See: [wiki] (https://en.wikipedia.org/wiki/Comma_o perator) [cppref] (http://en.cppreference.com/w/cpp/language/operator_other#Built-in_comma_operator) – Drop

+0

[Come funziona l'operatore virgola] (http://stackoverflow.com/q/54142/ 995714), [Qual è il corretto utilizzo dell'operatore virgola?] (Http://stackoverflow.com/q/17902992/995714), [Quando sovraccaricare l'operatore virgola?] (Http://stackoverflow.com/q/5602112/995 mila settecentoquattordici) –

risposta

8

C++ ha un operatore virgola che valuta la cosa a sinistra, scarta il valore restituito e quindi valuta la cosa sulla destra.

Si potrebbe scrivere (vedi http://ideone.com/hpQxWI)

int i = (1, 2, 3, 4); 
std::cout << i; 

e si dovrebbe stampare 4.

Così

jimmy[n,m] 

significa anche

jimmy[m] 
Problemi correlati