-1
我是C新手,在讀取函數中的矩陣聲明時遇到問題。如何閱讀這個複雜的C聲明?
void foo(int (*array)[][3], int row, int col)
和如何訪問數組元素的功能 - 比如打印它的值。
我是C新手,在讀取函數中的矩陣聲明時遇到問題。如何閱讀這個複雜的C聲明?
void foo(int (*array)[][3], int row, int col)
和如何訪問數組元素的功能 - 比如打印它的值。
int (*array)[][3]
聲明array
到是指向的2D陣列,其第二個維度是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
(*array)[][3]
是指向2D array.it可以指向一個int
數組變量行和3 columns.Here是一個例子:
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]);
}
這是一個無效的語法。也許有一些背景呢? –
這可能是有用的 http://codinghighway.com/2013/12/29/the-absolute-definitive-guide-to-decipher-c-declarations/ –
這可能是一個函數的參數列表;在這種情況下,該函數有三個參數:一個指向3個整數和另外兩個整數數組的數組。您可以在此處瞭解如何解析此類聲明:http://www.codeproject.com/Articles/7042/How-to-interpret-complex-CC-declarations – szczurcio