当前位置:编程学习 > C/C++ >>

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显示屏来显示“数字汉字字母”,谢谢了,具体点哦

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,