c语言调用函数返回值
⑴ c语言中调用函数如何返回多个值
建立数组,返回指针。
在要返回的两个值类型相同时,可以用创建数组的方式,将要返回的值存在数组中,并返回数组首地址,这样就可以实现返回两个值的效果。需要注意的是,要返回数组首地运首掘址,那么返回的值不可以是局部变量,有如下几种是可以的:
a) 使用静态局部变量存储,并返回地址;
b) 使用全局变量存储,返回地址;
c) 函数中动态分配内存,并返回申请到的地址,此种方法需要注意,在使用后需要释放;
d) 在参数中传入数组地址,并返回。即返回的实际上是主调函数中的变量地址。
(1)c语言调用函数返回值扩展阅读
通常我们希望通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值。函数的返回值是通过函数中的 return 语句获得的。return 语句将被调函数中的一个确定的值带回到主调函数中,供主调函数使用。
函数的返回值类型是在定义函数时指定的。return 语句中表达式的类型应与定义函数时指芹氏定的返回值类型一致。如果不一致,则以函数定义时的返回值类型为准,对 return 语句中表达式的类型自动进行转换,然后再将它返回给主调函数使用。
在调用函数时,如果需要从被调函数返回一个值供主调旁核函数使用,那么返回值类型必须定义成非 void 型。此时被调函数中必须包含 return 语句,而且 return 后面必须要有返回值,否则就是语法错误。
如果函数有返回值,那么 return 语句后面的括号可以不要,比如“return(z);”等价于“return z;”。若不需要返回值则可以不要 return 语句。
需要强调的是,一个函数中可以有多个 return 语句,但并不是所有的 return 语句都起作用。执行到哪个 return 语句,就是哪个 return 语句起作用,该 return 语句后的其他语句就都不会执行了。
⑵ C语言函数调用返回问题
一、return命令的含义
return命令的意思是返回调用者百。如果return后面有值(如你函数中的10),则将该值返回给调用者。
但是,在调用者函数(度如:main)中,如果想得到f()函数的返回值,需要有个变量来接收这个值,否则,这个数值将被程序忽略。
二、变量的定义、赋值与引用问
int main(void)
{
int i; //此时的i只是定义一个变量,变量是用来存储数据的。好比你想装东西,指定了一个箱子,可是现在箱子中没有东西(也可能这个箱子曾经被人用过,里面还有些垃圾答---随机值)
f(i); //函数f()引用了i变量,,但是i这个在f()中并没有发生变化(即使变化也不会影响到i,这里又涉及到实参与形参的问题内,先不讲),所以i还是个空箱子
printf("%d\n", i); //此时想输出i的数容值,因为是个随机值(空箱子),当然不能输出你想要的10了。 printf("%d\n", f(i)); //直接把函数返回的值,输出出来,可以看到10
return 0;
}
⑶ c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊
用指针,另外保存数据的变量退出函数时不得消失。
例如:
#include<stdio.h>
int * fun(int n)
{
int i;
static int a[100]; // 这里用static
for (i=0;i<n;i++) a[i]=i;
return &a[0];
}
void main()
{
int i,n=5;
int *p; // 声明指针
p = fun(n); // 返回指针
for (i=0;i<n;i++) printf("%d ",p[i]); // 把 p 看成数组来输出
}
得 0 1 2 3 4
(3)c语言调用函数返回值扩展阅读:
注意事项
1、数组宏棚的维度必须是一个常蔽段则量表达式
int main(void)
{
constexpr int i = 20;
int j = 5;//不是常量表达式
int arr1[i];//正确
int arr2[j];//错误
system("燃宏pause");
return 0;
}
2、默认情况下,数组的元素被默认初始化。
而且需要注意的是,和内置类型的变量一样,如果在函数内部定义了某种内置类型的数组,那么默认初始化会令数组有未定义的值。
⑷ c语言中,函数返回值怎么用
return后接数蔽一个值。 在调用这个函数的函数里面,调用它的时候希望获得一个值,如果不希望获得这个值的时候,用void声明就好。如果需要,比如说需要得到一个整形值 就声明 int func() 在调用它的比如main里面 func()的作用就可以相当于一个int型常数 比如外面定义了 int max(int a,int b) { return a>b?a:b; } 主函数里面是 main() { int A; A=max(1,2); } 这时候就是通过max计算 1>2 则return 一个1 ,谨毕孙1<2 则return一个2。很明显1<2 所以这里max(1,2)就会return 一个 2 这时候主函数里的max(1,2)就相当于一个常数 2 A=max(1,2)的作祥链用就相当于A=2 这个意思。
⑸ C语言函数调用:关于错误码和返回值传递的几个小思考
C 语言函数调用方式多样,涉及错误码和返回值传递的思考主要集中在参数和返回值如何更高效合理地传递信息。
假设有一个算法函数,输入两个整型参数,输出一个整型结果,并且输出一个错误代码。
第一种方式:全部参数传递。函数定义时,所有信息通过参数传递,函数签名的返回类型为 void,调用者需定义接收变量。
优点:统一调用形式,适应各种参数类型。
缺点:调用者需额外定义接收变量,显得冗余。
第二种方式:返回值表示错误码。将 err_code 参数通过函数返回值赋值给调用者,与 POSIX 风格相仿。
优点:函数调用简洁,适用于不常检查错误码的场景。
第三种方式:返回值表示输出结果。类似 Unix 风格,通过函数返回值传递结果。
缺点:同样需要定义接收变量 err_code,适用于结果和错误码都需关注的场景。
总结:三种方式并无好坏之分,取决于编码习惯与具体需求。
函数输出结果为结构体时,需考虑结构体类型与调用方式的匹配,以实现高效合理的信息传递。