C算法-------指针操作

在语言中,指针的重要ixng不言而喻,但很多时候指针被认为是一把双刃剑。一方面,

指针是构建数据结构和操作内存的精确而高效的,另一方面,指针是有很容易被程序员

误操作,从而造成不必要的BUG。

1 、 存储空间分配

当生命一个指针时,通常情况下会分配一个字长的存储空间;当生命一个指针时,仅仅

只是为指针本身分配了空间,并未有给指针所指向的数据分配空间,而为数据分配存储空

间有两种方法:一是,直接声明变量;另一种是在运行时动态地分配存储空间(mallo或者

realloc);

2、函数指针

函数指针是指向可执行代码段或者调用可执行代码段的信息块的指针,而不是某种数据的指针,

函数指针将函数当作普通的数据那样存储和管理。

例如 声明 一个函数指针:

int (*match)( void * key_1,void * key_2);


以上函数的意思是 申明一个函数指针,他接受两个指针参数,返回值个整数。

例如有个函数

int match_int(void *x,void*y)


那么可以这样赋值的 match = match_int;

当腰执行一个函数指针所引用的函数,如下:

int result ;

result = match(&x,&y);

函数指针最重要的用途是将函数封装在数据结构中。

3 引用调用

指针还经常用于引用方式(by reference)传递参数的函数当中。通过引用方式传递的参数

可以用来返回函数的执行结果,或者减少参数赋值所带来的开销。如果是指针类型的参数

用来返回函数的执行结果,则可以在函数体内发现对该参数的赋值结果操作。例如下面的

例子;

int
getGidByName(char *name,int *gid){
    [...]
    *gid = ptr->gid;
    return 0;
}

这个函数的返回值仅用来表明函数的出错情况。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值