【问题标题】:How do I read this complex C declaration?如何阅读这个复杂的 C 声明?
【发布时间】:2016-02-26 00:52:10
【问题描述】:

我是 C 新手,在函数中读取此矩阵声明时遇到问题。

void foo(int (*array)[][3], int row, int col)

在函数中如何访问数组元素 - 比如说打印它的值。

【问题讨论】:

标签: c pointers matrix multidimensional-array


【解决方案1】:
int (*array)[][3]

array 声明为指向第二维为3 的二维数组的指针。示例用法:

#include <stdio.h>

void foo(int (*array)[][3], int row, int col)
{
   printf("%d\n", (*array)[row][col]);
}

int main()
{
   int array[10][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
   foo(&array, 2, 2);

   return 0;
}

输出:

9

【讨论】:

    【解决方案2】:

    (*array)[][3] 是一个指向二维数组的指针。它可以指向一个由可变行和 3 列组成的 int 数组。这是一个示例:

    int main(void)
    {
        int arr[3][3] =
        {
            {0,0,0},
            {1,0,0},
            {1,1,0},
        };
        int (*array)[3][3],row,col;
        array = &arr;
        printf("arr[1][0] : %d\n",(*array)[1][0]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 2011-11-23
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      相关资源
      最近更新 更多