c语言函数数组返回值,c语言函数的返回值可以是数组吗
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语言函数调用中数组作为函数参数的返回值是直接把数组返回还是一个一个返回?
不能够返回整个数组,只能返回数组中的某个值。如果数组在函数内部定义,也不能直接返回数组名(临时变量在函数结束时会释放)。一般写程序不会把数组作为返回值返回,想要返回整个数组,可以用指针来实现。
C语言函数调用关于数组的返回
不用返回了,你这里函数里直接对数组元素进行操作,调用完之后a就是排好的
#includestdio.h
main()
{
int
a[count];
……;
order(a,count);//在这个地方调用排序(地方一)
……
}
void
order(int
a[],int
count)
//数组按从小到大排序
{
int
i,j,x;
for(i=0;icount;i++)
for(j=i+1;jcount;j++)
if(a[i]a[j])
{
x=a[i];
a[i]=wa[j];
a[j]=x;
}
}
关于C语言数组返回值
你错了
如图所示,我想问的问题是:
第一张图片之所以返回一个垃圾值是因为退出test函数后指针P指向变量a地址的值已经被释放,所以返回一个垃圾值!
答 不是返回垃圾值!而是返回a的地址!!所以输出是%d是a的地址
那么,同样的道理,第二张图返回的值也应该是个垃圾值才对啊!为什么返回的还是数组a所存放的值呢?
答 而是返回传入指针的地址!!只要该地址不被系统使用 自然输出字符串
c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊
用指针,另外保存数据的变量退出函数时不得消失。
例如:
#includestdio.h
int * fun(int n)
{
int i;
static int a[100]; // 这里用static
for (i=0;in;i++) a[i]=i;
return a[0];
}
void main()
{
int i,n=5;
int *p; // 声明指针
p = fun(n); // 返回指针
for (i=0;in;i++) printf("%d\n",p[i]); // 把 p 看成数组来输出
}
得 0 1 2 3 4
扩展资料:
注意事项
1、数组的维度必须是一个常量表达式
int main(void)
{
constexpr int i = 20;
int j = 5;//不是常量表达式
int arr1[i];//正确
int arr2[j];//错误
system("pause");
return 0;
}
2、默认情况下,数组的元素被默认初始化。
而且需要注意的是,和内置类型的变量一样,如果在函数内部定义了某种内置类型的数组,那么默认初始化会令数组有未定义的值。
C语言函数中返回数组
你的程序:
main()
{
int
b[3];
b=pop();
}
int
*
pop()
{
int
a[3],i;//定义的局部变量a[3]在调用完之后自动释放其空间
for(i=0;i3;i++)
a[i]=i;
return
a;//返回的是指向数组a[3]的地址而不是数组a[3]本身
}
注:既然上面说到调用的方法返回的是指向数组a[3]的地址,所以主函数中b接收的应该是指向数组a[3]的地址,而数组a[3]在方法调用完后又被释放了,所以b接收不到数组a[3],故出错。
正确的程序:
#includestdio.h
main()
{
int
b[3];
pop(b,3);
}
void
pop(int
a[],int
n)//该方法传入两个参数,第一个是传入指向数组的地址,第二个参数是传入数组的长度,不需写返回语句return,只需通过指向数组的地址的传入就可以直接将数组b[]的值改变
{
int
i;
for(i=0;in;i++)
a[i]=i;
}
标题名称:c语言函数数组返回值,c语言函数的返回值可以是数组吗
网站路径:http://myzitong.com/article/hdsogc.html