《C和指针》 读书笔记 -- 第13章 高级指针话题

1.函数指针

  int (*f)();

  int *(*f[])();

用途:

【1】回调函数

e.g.

/*在一个单链表中查找指定值*/

Node *search_list(Node *node,void const *value,int (*compare)(void const *,void const *) )

{

  while(node != NULL)

  {

    if(compare(&node->value,value)==0)

      break;

    node=node->link;

  }

  return node;

}

int compare_ints(void const *a,void const *b)

{

  if(*(int *)a == *(int *)b)

    return 0;

  else

    return 1;

}

desired_node=search_list(root,&desired_value,compare_ints);

【2】转移表

double add(double,double);

double sub(double,double);

double mul(double,double);

double div(double,double);

double (*oper_func[])(double,double)={add,sub,mul,div};

result=oper_func[oper](op1,op2);

2.命令行参数

int main(int argc,char **argv)

3.字符串常量

当一个字符常量出现在表达式中时,它的值是一个指针常量。编译器把这些指定字符的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针。

"xyz"+1;

"xyz"[2];

remainder=value%16;

if(remainder<10)

  putchar(remainder+'0');

else

  putchar(remainder-10+'A');

上一篇:网页上PNG透明图片的ie6bug


下一篇:C++中不可重载的5个运算符