当前位置:首页>综合>正文

c语言中函数能返回一个数组吗 函数的返回类型可以是数组吗

2023-06-28 21:30:39 互联网 未知 综合

 c语言中函数能返回一个数组吗 函数的返回类型可以是数组吗

c语言中函数能返回一个数组吗

在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。
在大多数情况下,一维数组和一维指针是可以通用的。

比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。 代码可以写成如下形式:
int *int_array_create(int n)//参数n为数组元素个数
{
int *r
if(n<=0) return NULL//参数错误
r = (int *)malloc(sizeof(int)*n)//申请内存空间,大小为n个int长度。
return r//返回得到的整型数组的指针。
}

函数的返回类型可以是数组吗?

数组不可以做函数返值的原因在于,函数的返值是赋值传递的,而数组不可以进行简单赋值。
解决办法有很多,指针是一个办法,用动态数组类型(比如CIntArray, CString)也是一个办法,还有一个比较简单的办法,就是通过地址传参的函数参数传递数组。

mysql中的存储过程能返回数组么

mysql中要获得存储过程的返回值,可以增加一个out参数,用来返回。
mysql中存储过程的例子:
CREATE PROCEDURE addvoucher (
IN userid INT,
IN voucherid INT,
OUT result INT
)
BEGIN
SELECT
@endate_a := endate ,@batch_a := batch ,@c_count_a := c_count,
@isdead_a := isdead
FROM
t_voucher
WHERE
id = voucherid
SET autocommit = 0
IF EXISTS (
SELECT
*
FROM
t_user_voucher tuv,
t_voucher tv
WHERE
tv.id = tuv.voucherid
AND tv.batch =@batch_a
) THEN

SET result = 1-- 已存在

SELECT
result
ELSE

IF @c_count_a > 0 THEN

IF (
TO_DAYS(@endate_a) - TO_DAYS(NOW())
) > 0 THEN

IF @isdead_a = 1 THEN
INSERT INTO t_user_voucher (userid, voucherid, isdead)
VALUES
(userid, voucherid, 1)
UPDATE t_voucher SET c_count = c_count-1 where id = voucherid

SET result = 0-- 成功
END
下面是调用并返回结果:

c 函数返回数组行不行

一般情况下,C/C 是不能返回数组的。但你可以返回一个值向数组的指针。
不过就这首道来看的话,你以一个传入的是一个int*型的指针(C/C 的机制,一个数组作为参数传入的话,会自动降为指针),那么你对ary这个数组进行的操作,其实就是在对原数组进行的操作,根本不用任何返回值就可以达到你修改数组的目的啊!

函数怎么返回数组啊? 呼叫大大哥

C/C 从理论上讲.返回数组是不可能的.只能返回数组指针,用这个指针访问数组元素."TInt a() ///函数名这里应该怎么写?{TInt b[]returnb}大概就是这个意思```"这是一种错误的写法,至于为什么,我不想讲,因为这是在是太基础了.这应该是C入门的标志.如果C/C 基础差的话,建议先把C/C 基础打牢.

在C中如何使函数返回数组

Java语言的函数可以轻易的返回一个数组,而C/C 却不能直接返回一个数组。这是由于在C/C 中,数组不是一种类型,因此不能被直接返回。
在C/C 中,一般有两种方法来返回一个数组。
第一种方法:
返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数retArray,该函数可以返回指向具有10个char元素的数组
例子如下:#include
#include int (*retArray())[10]{int (*a)[10]int i=0/*动态开辟空间*/
a=calloc(10,sizeof(int))/*赋值*/for(i=0i