关于c语言中函数返回值的问题

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:11:34
函数只能返回一个值,一个值是什么概念?一个数组是一个值吗?
题目是这样的:
写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换

不能用指针,因为这个问题是指针那章之前的~呵呵
如果函数返回值不能是一个数组,那怎么办?用全局变量是好方法吗?我写的这个程序出来怎么是乱码?
#include <stdio.h>
int B[3][3]={0};

void main()
{int a[3][3];
int i,j;
void wc(int b[][3]);
printf("pls input the array:");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
wc(a[3][3]);
printf("\nthe switch array is:\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%3d",B[i][j]);
printf("\n");
}
getch();
}
void wc(int b[][3])
{int m,n;
for(m=0;m<3;m++)
for(n=0;n<3;n++)
B[n][m]=b[m][n];
}

函数返回一个值, 不能是一个数组的值(可以是数组的地址)

因为不允许使用地址, 对于这个题目, 使用全局变量是一个很好的解决方法.

你程序的问题在于函数调用时传入的a[3][3],这是错误的,正确的传入方式是wc(a);
因为这里实际传入的是地址, 直接写a则是数组第一个元素的地址, 写a[3][3]则是最后一个元素的地址, 所以出错.

记住返回数组的首地址,传的时候也是数组的首地址