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;
}

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


你可能感兴趣的:(数据结构与算法)