数组作为函数返回值c语言 数组作为函数的返回值

c语言中如何使返回值为数组函数返回值一般为一个值,现在你要返回数组,那么你可以在程序中定义全局数组 , 或者你通过传指针的方式传过来数组参数 , 在函数中更改了数组的值后又把数组首地址返回去就可以用了 。
c语言中函数返回值可以是数组、字符串和结构体吗?//语法编码规则的角度看
ANSI C语言标准,明确规定 数组类型和函数类型不可以做为返回值 。
解决这种返回值的方法是通过指针来间接返回,即使用数组指针和函数指针 。这可以做为c语言引入指针的另一个理由 。
结构体类型可以做为返回值,我猜测C语言设计者当时引入struct结构体的概念,目的是为了增加一种建立C语言新类型的机制,换句话说它希望通过struct建立的类型 , 像内置的int float类型一样使用方便 。
//从汇编角度来看
有两种返回值方法,第一种是直接返回到寄存器的,第二种是类似于结构体返回值的那样 建立临时存储区的返回方式
比如 int 返回值类型、指针返回值类型,在ia32平台上都是直接返回到eax寄存器 不管是vc还是gcc,对于像float 类型的浮点返回值类型,在ia32平台 , 往往借助于fpu浮点运算器部件中的寄存器存储于栈中,第三类就是像struct结构体返回值,它需要建立临时对象,对于c语言来说引入一个临时内在区域是问题不大的,但是对于c这个有时候是致命的 。
我是菜鸟,希望能帮到你,观楼主英俊潇洒,风流倜傥 , 必当世豪杰,诚邀加入0x30百度贴吧 , 共商义举,建不世之功!
c语言函数返回数组你好!
将函数采用指针的形式返回平均值
注意看后面的注释
#includestdio.h
int main()
{
float *student_aver(float array[3][3]);// 改成指针的形式输出
float score[3][3];
float *a;
int i,j;
printf("请输入学生各科的成绩:");
for(i=0;i3;i)
for(j=0;j3;j)
scanf("%f",score[i][j]);
printf("每个学生的平均成绩分别为:");
a=student_aver(score);// 指针 a 接收函数的返回值
for(i=0;i3;i)// 打印出平均值
printf("%.2f ",a[i]);
return 0;
}
float *student_aver(float array[3][3])// 改成指针的形式输出
{
int i,j;
float sum,a[3];
for(i=0;i3;i)
{
sum=0;
for(j=0;j3;j)
sum=sum array[i][j];
a[i]=sum/3;
}
return a;// 输出数组 a
}
请问在C语言中数组可以作为返回值吗返回数组是不行的(用malloc分配倒是可以但不安全) , 但你的要求却可以达到,那就是用指针
比如,输入a,返回b和c:
void fun(int a, int *pb, int *pc)
{
*pb = a - 1;
*pc = a1;
}
int main()
{
int a = 1;
int b, c;
fun(a, b, c);//输入a返回b=a-1,c=a 1两个结果
printf("a=%d,b=%d,c=%d",a,b,c);//输出结果是“a=1,b=0,c=2”
【数组作为函数返回值c语言 数组作为函数的返回值】return 0;
}
关于数组作为函数返回值c语言和数组作为函数的返回值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读