指针函数和函数指针_c语言学习笔记

[size=large][color=blue]指针函数[/color][/size]
[size=medium]
1. 概念:指返回指针值的函数。[/size]

int *getData ( int num )
{
static int a[100]; // 定义为staitic类型
int k;

if ( num > 100 ) return (NULL);
for ( k=0; k<num; k++ )
scanf ("%d", &a[k]);
return (a);
}

[size=medium]2. 其他函数调用指针函数获取指针后,要在适当的时候,调用 free() 函数释放内存。

3. 指针函数 不能返回 auto 类型局部变量的地址,但可以返回 static 类型变量的地址
1)auto 型局部变量的生存期很短,返回的指针所对应的内存单元将被释放掉,返回指针也就无效,称为野指针。
2)static 类型局部变量的生存期等同于全局变量的生存期,因此函数返回时,返回的指针所对应的内存单元不会被释放,返回指针是有效的。
3)[color=red]原则:返回的指针所对应的内存空间不能因该指针函数的返回而被释放掉。[/color]

4. 指针函数常见返回值情况
1)函数中动态分配的内存的首地址。
2)函数中的静态(static)变量或全部变量所对应的存储单元的首地址。
3)通过指针参数所获得的实参的有效地址。
[/size]

[size=large][color=blue]函数指针[/color][/size]
[size=medium]
1. 概念:函数名即是该函数的指针,代表该函数的入口地址。函数指针就是指向一个函数的指针变量。可以通过函数指针调用此函数。

2. 定义和赋值:
[color=blue]函数类型 ( *指针变量 ) ( [ 形参类型1, 形参类型2 ... ] )[/size][/color]


int max ( int a, int b )
{
return ( a>b ? a : b );
}

int (*p)(int, int); // 定义函数指针p
p = max; // 将函数max()所对应的内存单元首地址(函数名max)赋给函数指针p
// 或 p = &max;

// 调用方式
p (2, 3); //等价于 max(2, 3);
(*p) (2, 3);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值