2013-04-13 12 views
7

Jadąc prosto do punktu,Jak ustawić wskaźnik na dowolny element tablicy 2D?

Chcę wskaźnik znaków p zwrócić się do jedynego elementu tablicy, która zawiera znak „T”.

char a[100][100]; 
char *p; 

for(int i=0;i<4;i++) 
    for(int j=0;j<4;j++) 
    if(a[i][j] == 'T') 
     p = a[i][j]; 

P.S. Próbowałem z różnymi kombinacjami *, ** itd., Ale nic nie działa.

+4

'a [i] [j]' jest char typem więc '& a [i] [j]' jest prostszym sposobem zapamiętania pierwszeństwo '[]' jest wyżej niż '&' so 'i a [i] [j] 'jest poprawne bez'() '. chcesz jakiejś innej techniki? lub cokolwiek innego –

+1

* "Próbowałem z różnymi kombinacjami' * ',' ** '" * - Powinienem wypróbować niektóre kombinacje '&'. ;) –

Odpowiedz

10

Użyj swojego adresu:

char a[100][100]; 
char *p; 

for(int i=0;i<4;i++) 
    for(int j=0;j<4;j++) 
    if(a[i][j] == 'T') 
     p = &a[i][j]; 

a[i][j] jest typu char i p jest typu char *, która posiada adres. Aby uzyskać adres zmiennej, dodaj ją z numerem &.

Operator * na wskaźniku działa na odwrót. Jeżeli chcesz uzyskać 'T' plecy, można użyć:

char theT = *p; 
-1

zmianę if część następująco

if(a[i][j] == 'T') { 
     p = (char *) &a[i][j]; 
     i = 4; break; 
    } 
5

istnieje inny sposób na to

char a[100][100]; 
char *p; 

for(int i=0;i<4;i++) 
    for(int j=0;j<4;j++) 
     if(a[i][j] == 'T') 
      p = a[i]+j; 

By pisząc: p = a[i]+j; tak naprawdę mówisz: Na początku tablicy mamy wskaźnik o nazwie a [i], a Ty wskażesz pozycję, która jest j razy od początku tej tablicy!