`

C语言返回多个参数方法(1)使用过方法3通过,方法1不通过,其它的没有试过

阅读更多
方法一:使用區域陣列 local array
#include <stdio.h>
float *fun(void)
{
    int i;
    float fArray[10];
    for( i = 0; i < 10; i++ )
        fArray[i] = i + i / 2.0f;
   
    return fArray;
}
int main(void)
{
    int i;
    float *fPtr;
   
    fPtr = fun();
   
    for( i = 0; i < 10; i++ )
        printf( "%f\t", fPtr[i] );
   
    printf("\n");
    return 0;
}
warning: function returns address of local variable
方法二:使用靜態陣列 static array
#include <stdio.h>
float *fun(void)
{
    int i;
    static float fArray[10];
    for( i = 0; i < 10; i++ )
        fArray[i] = i + i / 2.0f;
   
    return fArray;
}
int main(void)
{
    int i;
    float *fPtr;
   
    fPtr = fun();
   
    for( i = 0; i < 10; i++ )
        printf( "%f\t", fPtr[i] );
   
    printf("\n");
    return 0;
}
方法三:使用結構
#include <stdio.h>
struct fArray
{
    float data[10];
};
struct fArray fun(void)
{
    int i;
    struct fArray tempArray;
    for( i = 0; i < 10; i++ )
        tempArray.data[i] = i + i / 2.0f;
   
    return tempArray;
}
int main(void)
{
   int i;
    struct fArray data;
   
    data = fun();
       
    for( i = 0; i < 10; i++ )
        printf( "%f\t", data.data[i] );
   
    printf("\n");
    return 0;
}
方法四:使用動態記憶體
#include <stdio.h>
#include <stdlib.h>
float *fun(void)
{
    int i;
    float *tempArray;
   
    tempArray = malloc(sizeof(float)* 10);
    if( tempArray == NULL )
        exit(1);
   
    for( i = 0; i < 10; i++ )
        tempArray[i] = i + i / 2.0f;
   
    return tempArray;
}
int main(void)
{
    int i;
    float *data;
   
    data = fun();
       
    for( i = 0; i < 10; i++ )
        printf( "%f\t", data[i] );
   
    printf("\n");
   
    free(data);
    return 0;
}
方法五:使用傳址呼叫
#include <stdio.h>
#include <stdlib.h>
void fun(float tempArray[])
{
    int i;
   
    for( i = 0; i < 10; i++ )
        tempArray[i] = i + i / 2.0f;
}
int main(void)
{
    int i;
    float data[10];
   
    fun(data);
       
    for( i = 0; i < 10; i++ )
        printf( "%f\t", data[i] );
   
    printf("\n");
   
    free(data);
    return 0;
}
分享到:
评论

相关推荐

    C语言检测过零的方法--等待过零检测法

    本文将深入探讨一种使用C语言实现的过零检测方法——等待过零检测法,并通过具体的代码示例进行讲解。 #### 过零检测的基本原理 过零检测是指检测信号波形通过零点的事件。对于交流信号而言,每个周期都会有过零点...

    C语言程序设计:现代方法_附录A_C语言语法.pdf

    本文档是《C语言程序设计:现代方法》一书的附录A,专注于C语言的语法细节,提供了C语言编程中所使用的关键词、运算符、数据类型等语法元素的快速参考。 关键词(Keywords)是C语言中保留的特定词,用于表达程序...

    《你必须知道的495个C语言问题》

    我试过typedef struct{char *item; NODEPTR next;}* NODEPTR; 但是编译器报了错误信息。难道在C语言中结构不能包含指向自己的指针吗? 7  1.15 如何定义一对相互引用的结构? 9 1.16 Struct{ } x1;和typedef ...

    你必须知道的495个C语言问题

    然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素,namelen记录了元素个数。它是怎样工作的?这样是合法的和可移植的吗? 2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1却明确说明...

    广工05-1-C语言试卷A

    C语言程序是由一个或多个函数组成,每个函数都有其特定的功能。 2. **结构化程序设计原则**:不应使用`goto`语句(D)。结构化程序设计强调使用自顶向下、逐步细化的方法,以及模块化设计,提倡使用顺序、选择和...

    C语言中函数编写方法.pdf

    在使用该种方法时,需要对被调用的函数进行声明,具体的语句为:void fun(形参,类型 1,类型 2……类型 n),这种方法就可以在主函数中定义多个变量,然后返回变量的数值,该函数也就实现了多返回值的功能。...

    C语言程序使用宝典C语言函数使用

    C语言是一种广泛应用于系统编程、应用编程、嵌入式开发等多个领域的高级编程语言。它的语法简洁明了,功能强大,是许多程序员入门编程的第一选择。本篇将详细讲解C语言中的函数使用,帮助你深入理解和掌握这一核心...

    C语言-任务三1

    首先,`power`函数接收两个参数,即底数和指数。它需要计算底数被指数次幂的结果。在C语言中,可以使用循环或内置的`pow`函数来实现这个功能。如果选择使用循环,一个简单的实现方法是: ```c int power(int base, ...

    C语言的测试题-测试C的水平

    3. 注释不可嵌套,但若需注释掉含有注释的代码,可使用`/* ... */`方式注释整个块。 4. 自动变量是在函数内部定义的,因它们的生命周期与函数调用相关联,故得名“自动变量”。它们的存储位置在栈上,调用结束后...

    如何编写有多个返回值的C语言函数.pdf

    总结来说,尽管C语言的标准函数返回机制仅支持一个返回值,但通过巧妙地使用全局变量、数组指针和结构体,可以有效地解决返回多个值的问题。在实际编程中,应根据具体情况选择合适的方法,考虑代码的可读性、效率...

    C语言函数的应用例子

    * 函数的参数传递:函数可以接受多个参数,参数可以是整数、浮点数、字符等类型。 * 函数的返回值:函数可以返回一个值,该值可以是整数、浮点数、字符等类型。 2. 定义一个函数,求两个数的平均值 在这个例子中,...

    C语言多线程

    - **多线程**: 多线程指的是程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。 #### 多线程的优势 - **提高应用程序响应性**: 对于图形用户界面程序来说尤为重要。当一个操作...

    495个C语言常见问题集

    #### 3.10 如果我不使用表达式的值,我应该用++i 或 i++ 来自增一个变量吗? 如果你不关心表达式的值,使用`++i`通常更高效,因为它只需要递增操作,而`i++`还需要复制操作。 #### 3.11 为什么如下的代码int a = ...

    C语言中可变参数实现分析

    在C语言中,函数可以接受不确定数量的参数,这一特性通过可变参数函数实现。这种灵活性使得程序能够处理更广泛的输入情况,尤其是在需要处理用户输入或日志记录等场景下尤为重要。本文将深入探讨C语言中可变参数的...

    三个容器的倒水问题(C语言实现)

    在C语言中,我们可以创建一个函数,接受三个参数,即三个容器的容量。接下来,我们需要遍历所有可能的倒水组合,检查是否能达成目标。这可以通过递归实现,每次选择一个容器向另一个容器倒水,直到一个容器为空或者...

    C语言错误大权,有效排错

    - 在涉及多个运算符的表达式中,通过添加括号来清晰地指定运算顺序。 - 例如,如果想先执行乘法后执行加法,可以这样写 `(a * b) + c`。 #### 2. Ambiguous symbol xxx — 不明确的符号 - **问题说明**:编译器...

    水滴石穿C语言之内存使用.pdf

    本文档主要探讨了C语言中内存使用的几个关键方面,包括不同内存段的作用与特点、内存分配和回收的最佳实践以及通过示例解释了如何正确处理内存中的数据。其中特别提到了一个关于`itoa`函数使用的例子,以此来讲解...

Global site tag (gtag.js) - Google Analytics