方法一:使用區域陣列 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语言程序设计:现代方法》一书的附录A,专注于C语言的语法细节,提供了C语言编程中所使用的关键词、运算符、数据类型等语法元素的快速参考。 关键词(Keywords)是C语言中保留的特定词,用于表达程序...
我试过typedef struct{char *item; NODEPTR next;}* NODEPTR; 但是编译器报了错误信息。难道在C语言中结构不能包含指向自己的指针吗? 7 1.15 如何定义一对相互引用的结构? 9 1.16 Struct{ } x1;和typedef ...
然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素,namelen记录了元素个数。它是怎样工作的?这样是合法的和可移植的吗? 2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1却明确说明...
C语言程序是由一个或多个函数组成,每个函数都有其特定的功能。 2. **结构化程序设计原则**:不应使用`goto`语句(D)。结构化程序设计强调使用自顶向下、逐步细化的方法,以及模块化设计,提倡使用顺序、选择和...
在使用该种方法时,需要对被调用的函数进行声明,具体的语句为:void fun(形参,类型 1,类型 2……类型 n),这种方法就可以在主函数中定义多个变量,然后返回变量的数值,该函数也就实现了多返回值的功能。...
C语言是一种广泛应用于系统编程、应用编程、嵌入式开发等多个领域的高级编程语言。它的语法简洁明了,功能强大,是许多程序员入门编程的第一选择。本篇将详细讲解C语言中的函数使用,帮助你深入理解和掌握这一核心...
首先,`power`函数接收两个参数,即底数和指数。它需要计算底数被指数次幂的结果。在C语言中,可以使用循环或内置的`pow`函数来实现这个功能。如果选择使用循环,一个简单的实现方法是: ```c int power(int base, ...
3. 注释不可嵌套,但若需注释掉含有注释的代码,可使用`/* ... */`方式注释整个块。 4. 自动变量是在函数内部定义的,因它们的生命周期与函数调用相关联,故得名“自动变量”。它们的存储位置在栈上,调用结束后...
总结来说,尽管C语言的标准函数返回机制仅支持一个返回值,但通过巧妙地使用全局变量、数组指针和结构体,可以有效地解决返回多个值的问题。在实际编程中,应根据具体情况选择合适的方法,考虑代码的可读性、效率...
* 函数的参数传递:函数可以接受多个参数,参数可以是整数、浮点数、字符等类型。 * 函数的返回值:函数可以返回一个值,该值可以是整数、浮点数、字符等类型。 2. 定义一个函数,求两个数的平均值 在这个例子中,...
- **多线程**: 多线程指的是程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。 #### 多线程的优势 - **提高应用程序响应性**: 对于图形用户界面程序来说尤为重要。当一个操作...
#### 3.10 如果我不使用表达式的值,我应该用++i 或 i++ 来自增一个变量吗? 如果你不关心表达式的值,使用`++i`通常更高效,因为它只需要递增操作,而`i++`还需要复制操作。 #### 3.11 为什么如下的代码int a = ...
在C语言中,函数可以接受不确定数量的参数,这一特性通过可变参数函数实现。这种灵活性使得程序能够处理更广泛的输入情况,尤其是在需要处理用户输入或日志记录等场景下尤为重要。本文将深入探讨C语言中可变参数的...
在C语言中,我们可以创建一个函数,接受三个参数,即三个容器的容量。接下来,我们需要遍历所有可能的倒水组合,检查是否能达成目标。这可以通过递归实现,每次选择一个容器向另一个容器倒水,直到一个容器为空或者...
- 在涉及多个运算符的表达式中,通过添加括号来清晰地指定运算顺序。 - 例如,如果想先执行乘法后执行加法,可以这样写 `(a * b) + c`。 #### 2. Ambiguous symbol xxx — 不明确的符号 - **问题说明**:编译器...
本文档主要探讨了C语言中内存使用的几个关键方面,包括不同内存段的作用与特点、内存分配和回收的最佳实践以及通过示例解释了如何正确处理内存中的数据。其中特别提到了一个关于`itoa`函数使用的例子,以此来讲解...