您的位置:首页 > 其它

081.Return Pointer Function 返回指针的函数

2015-07-19 01:27 267 查看
---------------
main.m
---------------
#import
<Foundation/Foundation.h>

#define LENGTH
5

int* map(int*
data ,int
(*fn)())

{

static
int result[LENGTH];

int
i = 0;

for(int*
p = data; p < data +
LENGTH ; p++)
{
result[i++] = (*fn)(*p);
}

return
result;
}

int
noChange(int
val)

{

return val;
}
int
square(int
val)

{

return val * val;
}
int
cube(int
val)

{

return val * val * val;

}

int
main()

{

int
data[] = {20
, 12
, 8
, 36,
24};

int* arr1 =
map(data ,
noChange);

for(int
i =
0 ; i <
LENGTH ; i ++)

{

printf("%d , "
, *(arr1 + i));

}

printf("\n");

int* arr2 =
map(data ,
square);

for(int
i =
0 ; i <
LENGTH ; i ++)

{

printf("%d , "
, *(arr2 + i));

}

printf("\n");

int* arr3 =
map(data ,
cube);

for(int
i =
0 ; i <
LENGTH ; i ++)

{

printf("%d , "
, *(arr3 + i));

}

printf("\n");
}

一、编写本节代码的具体步骤:
1.参照003节的代码编写步骤。

二、本节代码涉及到的知识点:
1.当函数返回指针时需要注意,如果该指针指向的是被调用函数中的一个局部变量,这将非常危险。
2.因为函数调用完了之后,该函数中局部变量所占用的内存空间将立即被释放,此时返回的数据是不确定的。
3.为了保证函数返回的指针是有效的,这个局部变量应该使用static来修饰。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: