`

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;
}
分享到:
评论

相关推荐

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

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

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

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

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

    3.10 如果我不使用表达式的值, 我应该用++i 或i++ 来自增一个变量 吗? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.11 为什么如下的代码int a = 100, b = 100; long int c = a * b;...

    C语言程序设计标准教程

    在{}中的函数体内, 除形参外没有使用其它变量,因此只有语句而没有变量类型说明。 上边这种定义方法称为“传统格式”。 这种格式不易于编译系统检查,从而会引起一些非常细微而且难于跟踪的错误。ANSI C 的新标准中...

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

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

    C语言FAQ 常见问题列表

    o 4.10 如果我不使用表达式的值, 我应该用 ++i 或 i++ 来自增一个变量吗? o 4.11 为什么如下的代码 int a = 100, b = 100; long int c = a * b; 不能工作? o 4.12 我需要根据条件把一个复杂的表达式赋值给两个...

    C语言入门经典(第4版)--源代码及课后练习答案

    读者基本不需要具备任何编程知识,即可通过本书从头开始编写自己的C程序。 作译者 作者  Ivor Horton是世界著名的计算机图书作家,主要从事与编程相关的咨询及撰写工作,曾帮助无数程序员步入编程的殿堂。他曾在...

    明解C语言(第3版)入门篇.[日]柴田望洋(带详细书签).pdf 【半高清】

    访问数组(数组的使用方法) 123 数组的遍历 124 数组初始化 126 数组的复制 127 输入数组元素的值 129 对数组的元素进行倒序排列 129 使用数组进行成绩处理 131 对象式宏 131 数组元素的最大值和最小值 ...

    C语言标准教程第一章 C语言概论

    适用于初学者 ...在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不作处理,待调试结束后再去掉注释符。 资料收集:beck Copyright 2002 www.vcok.com, All Rights Reserved 初学者

    c语言编写单片机技巧

    1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言...

    C语言编程要点

    12.9. 有没有办法从一个或多个函数中跳出? 179 12.10. 什么是信号(signal)?用信号能做什么? 181 12.11. 为什么变量名不能以下划线开始? 182 12.12. 为什么编译程序提供了两个版本的malloc()函数? 182 12.13. 适用于...

    C语言解析教程(原书第4版)(美) 凯利.pdf

    《c语言教程(原书第4版)》的一个鲜明特色就是结合大量示例描述c语言的重要特征,并对很多工作代码给出了逐步的分析,以这种独特的教学方法向读者解释新接触的编程元素及一些惯用法。  《c语言教程(原书第4版)》...

    (谭浩强)c语言学习书

    一个C语言源程序可以由一个或多个源文件组成。 2.每个源文件可由一个或多个函数组成。 3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。 4.源程序中可以有预处理命令(include 命令...

Global site tag (gtag.js) - Google Analytics