基本上我所拥有的是一个接受二维数组作为参数的函数,然后我希望能够创建一个指向该数组的二维指针。这是示例代码:
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
}
出于某种原因,如果在函数中声明了数组(而不是作为参数),则此方法很好用,但是我无法终生弄清楚如何解决此问题。
数组不能通过C中的值进行传递。乍看之下,in的语法func
并不意味着它的外观。
a
该函数中实际上是一个指针,而不是数组,因此您可以通过编写以下代码来实现所需的功能:
int (*ptr)[3][3]= (int (*)[3][3])a;
工作程序,尽管传递&a
给它func
并使其int (*)[3][3]
直接接受func可能更简单:
#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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句