2016-02-02 41 views
6

私は二次元配列から1次元配列を取得

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

及びIは、outer内部のようなものをn番目の一次元アレイに対するポインタ/配列を取得したいような配列

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 */ 
} 

もちろん、これはポインタの数学では可能ですが、私は忘れてしまったこのための構文があるように感じます。配列へのポインタの場合

+7

int * inner =&outer [1] [0]; – user3528438

答えて

6

、あなたは配列 outer[1]の最初の要素へのポインタをしたい場合は3 int

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


の配列へのポインタとしてinnerを宣言し、その後

int *inner = outer[1]; 

がその仕事をします。あなたも可能です

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

2番目の作品です。ありがとう! @Charles; – Charles

+0

;あなたはコメントの中で(今削除された)配列へのポインタを求めました。 – haccks

+0

混乱して申し訳ありません。私は2分で受け入れます。 – Charles