c语言如何返回一个数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如何返回一个数组?相关的知识,希望对你有一定的参考价值。

extend()函数返回数组amounts怎么改?

#include<stdio.h>
#include<stdlib.h>

double extend(double[],double[]);

int main()
double price[] = 10.62,14.89,13.21,16.55,18.62,9.47,6.58,18.32,12.15,3.98;
double quantity[] = 4,8.5,6,8.35,9,15.3,3,5.4,2.9,4.8;
double amount[10];
int i;

extend(price,quantity);

for (i = 0; i < 10; i++)
printf("%lf\n", amount[i]);


printf("\n");
return 0;


double extend(double prices[], double quantities[])
int i;
double amounts[10];

for (i = 0; i < 10; i++)
amounts[i] = prices[i] * quantities[i];


return amounts;

只能返回一个数,数组不能返回,以数组为函数参数传给形参时,由于是数组名传递(地址传递),实参和形参共用一段内存,对形参更改时实参的值也会改变,所以不需要返回值 参考技术A 只能返回一个数,数组不能返回,以数组为函数参数传给形参时,由于是数组名传递(地址传递),实参和形参共用一段内存,对形参更改时实参的值也会改变,所以不需要返回值 参考技术B return amounts;
你返回的是地址,所以函数类型应该是指针型的才能返回。
即 * extend
参考技术C double extend(double prices[], double quantities[])
int i;
double amounts[10];

for (i = 0; i < 10; i++)
amounts[i] = prices[i] * quantities[i];


return amounts; //栈中局部变量,返回后其内存为垃圾值

改成:

double *extend(double[],double[]);

int main()
double price[] = 10.62,14.89,13.21,16.55,18.62,9.47,6.58,18.32,12.15,3.98;
double quantity[] = 4,8.5,6,8.35,9,15.3,3,5.4,2.9,4.8;
//double amount[10];
double *amount;
int i;

amount = extend(price,quantity);

for (i = 0; i < 10; i++)
printf("%lf\n", amount[i]);


delete[] amount; //释放内存

printf("\n");
return 0;


double *extend(double prices[], double quantities[])
int i;
//double amounts[10];
double *amounts = new double[10];
for (i = 0; i < 10; i++)
amounts[i] = prices[i] * quantities[i];


return amounts; //可以返回指针
本回答被提问者和网友采纳
参考技术D #include<stdio.h>
#include<stdlib.h>

double extend(double[],double[],double *p);

int main()

double price[] = 10.62,14.89,13.21,16.55,18.62,9.47,6.58,18.32,12.15,3.98;
double quantity[] = 4,8.5,6,8.35,9,15.3,3,5.4,2.9,4.8;
double amount[10];
int i;

int j = extend(price,quantity, amount);

for (i = 0; i < j; i++)

printf("%lf\n", amount[i]);


printf("\n");
return 0;

//传入要返回的数组名,函数返回数组的大小
int extend(double prices[], double quantities[],double *p)

int i;

for (i = 0; i < 10; i++)

*(p+i)= prices[i] * quantities[i];


return i;

C语言中“max”和“min”如何使用?

1、max函数

用于求数组中的最大元素。暂时用到的语法形式有以下3种:

C = max(A);

C = max(A, B);

C = max(A, [], dim);

描述:

C = max(A)返回数组不同维度的最大元素。如果A是一个向量,max(A)返回向量A中的最大元素;如果A是一个矩阵,max(A)将矩阵A的每一列视为向量,最后返回一个行向量,这个行向量的每个元素是对应列向量的最大元素;如果A是一个多维数组,max(A)将第一个尺寸不为1的维度里的值视为向量,然后返回每个向量的最大值。

C = max(A, B)返回一个数组,该数组的尺寸与A和B相同,该数组的元素取自A和B中的最大值。A和B的维度必须要匹配,或者它们都是标量。

C = max(A, [], dim)根据指定标量dim返回矩阵A中的最大元素。比如dim=1,则返回行向量,其中每个元素都是对应列的最大元素;比如dim=2,则返回列向量,其中每个元素都是对应行的最大元素。

2、min函数

用于求数组中的最小值。暂时用到的语法形式有3种:

C = min(A);

C = min(A, B);

C = min(A, [], dim);

扩展资料:

C语言编写注意事项:

1、每个程序中一定包含main()函数, 尽管C语言中对函数命名没有限制。

2、printf函数永远不会自动换行,只能用\\n来实现, 回车键进行的换行在编译中会出现错误信息。

3、在vs2008中编译,测试需要加 system("pause");来暂停dos自动退出导致的printf无法显示。

4、所有自定义变量 必须声明才能使用。

参考技术A

有个math库  math库里有max这个函数 #define max(a,b)(a>b?a:b),是C语言版的内联函数
。第三行是一个三目运算符,可以这样理解:

if ( a > b )

return a;

else

return b;

这是C++版的内联函数,不同的是多了个类型检查,所以函数的数据类型不一定是float,可以是int,double......inline float max ( float a, float b )// (a>b?a:b)。上面的与下面语句是等效的:

if ( a > b )

return a;

else

return b。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。

以上是关于c语言如何返回一个数组?的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何返回结构体数组

C语言函数如何return数组?

c语言动态数组如何扩充空间

C语言 怎么返回一个数组

c语言函数返回数组

C语言如何声明一个返回函数指针的函数?