c语言中数组做参数时,元素值无法传递吗?
#include<stdio.h>intzhuan1(intz[3][3],intx[3][3],intc[3][3],intv[3][3],intn[3][3],int...
#include<stdio.h>
int zhuan1(int z[3][3], int x[3][3], int c[3][3], int v[3][3], int n[3][3], int f[3][3]);
int zhuan2(int z[3][3], int x[3][3], int c[3][3], int v[3][3], int n[3][3], int f[3][3]);
int zhuan3(int z[3][3], int x[3][3], int c[3][3], int v[3][3], int n[3][3], int f[3][3]);
int qiuhe(int z[3][3]);
int chaju(int z[3][3], int x[3][3], int c[3][3], int v[3][3]);
int main()
{
int a, s;
printf("魔方游戏,2红5黄7绿11白13黑17橙\n");
int q[3][3];
int w[3][3];
int e[3][3];
int r[3][3];
int t[3][3];
int y[3][3];
printf("请自左向右自上而下输入前面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &q[a][s]);
}
}
printf("请自左向右自上而下输入右面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &w[a][s]);
}
}
printf("请自左向右自上而下输入后面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &e[a][s]);
}
}
printf("请自左向右自上而下输入左面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &r[a][s]);
}
}
printf("请自左向右自上而下输入上面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &t[a][s]);
}
}
printf("请自左向右自上而下输下面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &y[a][s]);
}
}
zhuan1(q, w, e, r, t, y);
return 0;
}
int zhuan1(int z[3][3], int x[3][3], int c[3][3], int v[3][3], int n[3][3], int f[3][3])
{
printf("尝试1");
printf("%d", v[0][1]);
int q, a, qw, b = 0;
int m[3][3];
qw = chaju(z, x, c, v);
printf("差距1"); 展开
int zhuan1(int z[3][3], int x[3][3], int c[3][3], int v[3][3], int n[3][3], int f[3][3]);
int zhuan2(int z[3][3], int x[3][3], int c[3][3], int v[3][3], int n[3][3], int f[3][3]);
int zhuan3(int z[3][3], int x[3][3], int c[3][3], int v[3][3], int n[3][3], int f[3][3]);
int qiuhe(int z[3][3]);
int chaju(int z[3][3], int x[3][3], int c[3][3], int v[3][3]);
int main()
{
int a, s;
printf("魔方游戏,2红5黄7绿11白13黑17橙\n");
int q[3][3];
int w[3][3];
int e[3][3];
int r[3][3];
int t[3][3];
int y[3][3];
printf("请自左向右自上而下输入前面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &q[a][s]);
}
}
printf("请自左向右自上而下输入右面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &w[a][s]);
}
}
printf("请自左向右自上而下输入后面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &e[a][s]);
}
}
printf("请自左向右自上而下输入左面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &r[a][s]);
}
}
printf("请自左向右自上而下输入上面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &t[a][s]);
}
}
printf("请自左向右自上而下输下面数字:\n");
for (a = 0; a < 3; a++)
{
for (s = 0; s < 3; s++)
{
scanf("%d", &y[a][s]);
}
}
zhuan1(q, w, e, r, t, y);
return 0;
}
int zhuan1(int z[3][3], int x[3][3], int c[3][3], int v[3][3], int n[3][3], int f[3][3])
{
printf("尝试1");
printf("%d", v[0][1]);
int q, a, qw, b = 0;
int m[3][3];
qw = chaju(z, x, c, v);
printf("差距1"); 展开
1个回答
展开全部
传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。
void func(int array[10])
void func(int array[])
void func(int *array)
所以以上三种函数声明完全等同。
实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。
下一个问题是:为什么偏要按值传递呢?当要在一个函数内使用一个数组时,传一个指针进去不就行了?只要能访问到我们所要的数据并对其进行操作,何苦钻牛角尖。
void func(int array[10])
void func(int array[])
void func(int *array)
所以以上三种函数声明完全等同。
实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。
下一个问题是:为什么偏要按值传递呢?当要在一个函数内使用一个数组时,传一个指针进去不就行了?只要能访问到我们所要的数据并对其进行操作,何苦钻牛角尖。
追问
用指针的话就改变了主函数中数组的数据,我想保持原数组不变,以备他用
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询