2016-02-02 17 views
6

Ich habe ein Array wieErsten eindimensionale Arrays aus einem zweidimensionalen Array

int outer[4][3] = { 
    { 1, 2, 3 }, 
    { 2, 3, 5 }, 
    { 1, 4, 9 }, 
    { 10, 20, 30 } 
}; 

und ich möchte einen Zeiger/Array für die n-ten eindimensionalen Array innerhalb outer bekommen, so etwas wie

void foo() { 
    printf("%d %d %d\n", outer[1][0], outer[1][1], outer[1][2]); 
    int inner[3] = outer[1]; /* Is there some way to do this assignment? */ 
    printf("%d %d %d\n", inner[0], inner[1], inner[2]); 
    /* so that this line gives the same output as the first */ 
} 

natürlich ist dies möglich mit Zeiger Mathe, aber ich fühle mich wie es einige Syntax dafür ist, dass ich vergessen habe.

+7

int * innere = & äußere [1] [0]; – user3528438

Antwort

6

Für Zeiger auf Array, erklären inner als Zeiger auf ein Array von 3 int

int (*inner)[3] = &outer[1]; 


Wenn Sie einen Zeiger auf das erste Element der outer[1] Array wollen, dann

int *inner = outer[1]; 

wird den Job machen. Sie können auch tun

int *inner = &outer[1][0]; 
+0

Der zweite funktioniert. Vielen Dank! – Charles

+0

@Charles; Sie haben im Kommentar (jetzt gelöscht) nach dem Zeiger auf das Array gefragt. – haccks

+0

Sorry für die Verwirrung. Ich werde in 2 Minuten akzeptieren. – Charles

Verwandte Themen