若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。
方法一:使用區域陣列 local array
除了方法一的結果是不如預期,其他四個都是OK。
方法一:使用區域陣列 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;
}
沒有留言:
張貼留言