c 语言数组问题,
编一个函数设置了数组a[],怎么返回这个数组?应该不是return a[];这样的格式吧,我要在主函数中调用这个数组?谢谢。
追问:可不可以简单一点,在主函数中直接调用该数组的方法。我要定义2*2的数组函数,我要在主函数中调用这个数组参与到矩阵相乘的运算,难道直接就用a运算吗?
答案:c语言的函数的返回值不支持返回数组,但是可以换一种方式来返回,比如可以让函数传入一个指针形参,然后操作这个指针就相当于改变了数组的值,调用这个函数时,只需要把数组名传入即可.
下面写给你个小例子看看效果:
#include <stdio.h>
void fun(int *a)
{
for (int i = 0; i < 10; ++i)
{
a[i] = i;
}
}
void main()
{
int aa[10] = {0};
for (int i = 0; i < 10; ++i)
{
printf("%d ", aa[i]);
}
printf("\n");
fun(aa);
for (int i = 0; i < 10; ++i)
{
printf("%d ", aa[i]);
}
printf("\n");
}
// aa数组传入fun之前都是0,传入以后就有新值了,这个和return是一样的效果。
其他:你可以返回一个指向该数组的指针啊 如果定义的是没有返回值的函数,可以直接定义参数是数组的函数,实参和形参是同一个地址,在主函数中直接调用这个函数就行了;
如果是想定义返回带数组的函数,可以这样定义函数:
数据类型 * 函数名(){}
数组a[]可以是形参,也可以在函数中定义
用return a;返回这个数组
在主函数中用赋值语句调用该函数 #include "stdio.h"
#define MaxLength 10
void main()
{
int i,s[MaxLength],n,x=0,y=0,temp;
printf("输入整数个数(不超过%d个):",MaxLength);
scanf("%d",&n);
printf("输入%d个整数:",n);
for (i=0;i<n;i++)
{//输入数据的同时,记录最小值和最大值的下标,可减少运行时间
scanf("%d",&s[i]);
if(s[x]>s[i])x=i;//记录最小值下标
if(s[y]<s[i])y=i;//记录最大值下标
}
temp=s[x];s[x]=s[0]; s[0]=temp;//将最小值与第一个数交换
temp=s[y];s[y]=s[n-1]; s[n-1]=temp;//将最大值与最后一个数交换
for (i=0;i<n;i++)printf("%d ",s[i]);//输出处理后的数据
printf("\n");//换行
}
上一个:C语言开头不同的问题
下一个:怎么样C语言控制LED显示屏来显示“数字汉字字母”,谢谢了,具体点哦