基本上我所拥有的是一个接受二维数组作为参数的函数,我希望能够创建一个指向该数组的二维指针。这是示例代码:
int main(){
int a[3][3]={0,1,2,3,4,5,6,7,8};
func(a);
}
int func(a[3][3]){
int (*ptr)[3][3]=&a;//this is the problem
}
由于某些原因,如果在函数中声明了数组(而不是作为参数),这样可以正常工作,但我不能在我的生活中找出如何解决这个问题。
答案 0 :(得分:0)
在C中,您不是直接将数组传递给函数,而是通过引用传递 - 即通过将指针传递给数组的第一个元素 - 这很重要 - 数组大小。
编辑:当你声明X [5]时,你想要通过引用来调用的指针是X,即用乐趣调用函数(X,5); fun是用fun定义的(int * ptr,int length)
从移动应用程序发布,请根据需要编辑代码显示。
答案 1 :(得分:0)
无法通过C中的值传递数组。func
does not mean what it looks like中的语法乍一看。
a
实际上是一个指针,而不是一个数组,所以你可以通过编写来实现你想要的:
int (*ptr)[3][3]= (int (*)[3][3])a;
工作计划,虽然将&a
传递给func
并让func直接接受int (*)[3][3]
可能更简单:
#include <stdio.h>
int func(int a[3][3]){
int (*ptr)[3][3]=(int (*)[3][3])a;
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
printf("%d\n", (*ptr)[i][j]);
}
int main(){
int a[3][3]={0,1,2,3,4,5,6,7,8};
func(a);
}