关于函数参数传递,,涉及到二维的话,请参考下文
http://
在我的认知里,函数传递数组的时候他也就是传递指针,那么对于二维数组,我们其实是可以把他用一个特定公式看成一维数组进行读写的。
比如
#include<stdio.h>
#include<stdbool.h>
void fun(int [],int n);
int main()
{
int a[5][5];
for(int i=0;i<5;i++){
for(int j=0;j<5;j++)
a[i][j]=i*10+j;//这个赋值主要是为了让大家看得更清楚些,没有任何含义
}
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n----------------\n");
int*p=(int*)a;//把二维数组指针强制转换为一维数组指针。
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("%d ",p[i*5+j]);
}
printf("\n");
}
return 0;
}
--------------------------------------------
我学C语言的时候也一直以为数组是不可以用变量去定义的。
比如
int mian(){
int n;
scanf("%d",&n);
int a[n];
....
}
直到后来,有一天,有人告诉我现在的很多编译器都已经支持了动态声明,原理我不晓得,但是我在我的电脑上用DEV C++试了一下,上面这个函数并没有报错,我对数组进行赋值/读取也没遇到问题。只不过用到OJ作业提交就不行了。