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

本文介绍了如何在C语言中使用指针返回静态数组,并通过示例展示了如何利用函数指针实现数组元素的不同数学操作,如保持不变、平方和立方。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------  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来修饰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值