从二维数组中获取一维数组

6

I have an array like

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

我希望能够获得指向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
内部指针指向的是二维数组outer的第二行(下标为1)的第一个元素(下标为0)。 - user3528438
1个回答

6

指向数组的指针,将inner声明为指向3个int数组的指针

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

如果你想获得数组outer[1]的第一个元素的指针,那么:
int *inner = outer[1];  

做得到这份工作。你也可以做

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

@Charles:你在评论中(现已删除)询问了有关数组指针的问题。 - haccks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接