如何阅读这个复杂的C声明?
我是C语言新手,在函数中读取这个矩阵声明时遇到问题 void fooint*数组[][3],整数行,整数列 在函数中,我如何访问数组元素——比如说打印它的值如何阅读这个复杂的C声明?,c,pointers,matrix,multidimensional-array,C,Pointers,Matrix,Multidimensional Array,我是C语言新手,在函数中读取这个矩阵声明时遇到问题 void fooint*数组[][3],整数行,整数列 在函数中,我如何访问数组元素——比如说打印它的值 int (*array)[][3] 将数组声明为指向第二维度为3的二维数组的指针。用法示例: #include <stdio.h> void foo(int (*array)[][3], int row, int col) { printf("%d\n", (*array)[row][col]); } int mai
int (*array)[][3]
将数组声明为指向第二维度为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;
}
*数组[][3]是指向2D数组的指针。它可以指向变量行和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]);
}
这是一个无效的语法。这可能是有用的,这可能是一个函数的参数列表;在这种情况下,函数接受三个参数:指向3个整数数组的指针和另外两个整数数组。您可以在这里学习如何解析此类声明:可能重复@szczurcio是的,它是函数的一部分。我在问题上做了改变
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]);
}