Chinaunix首页 | 论坛 | 博客
  • 博客访问: 60672
  • 博文数量: 15
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-04 13:29
文章分类
文章存档

2011年(1)

2008年(14)

我的朋友

分类: C/C++

2008-05-23 15:57:40

 
pointer与array 和function搭配起来总是让人不自觉地迷糊,下面就几个平时特别留意的几个概念复述
一下:
pointer to functions: 函数指针变量,指向函数的入口地址(首地址),例如:
 
int (*pf) (char *s,int n); 表明指针变量pf是一个指向函数的指针,而且该函数的返回值类型为int
函数的arg list=(char *s,int)
 
pointer functions: 指针函数,是一个返回值为指针的函数
int *pf (char *s,int); 表明pf是一个指针函数,也即是函数pf的return value是一个指针,而且指向的是一个int变量,它的arg list=(char *s,int)
 
可以看到pointer functions and pointer to functions 区别还是很大的,在使用pointer to functions的时候,pf代表指针变量,而(*pf)代表函数,下面用一个简单的例子来说明函数指针的用法:
 
int main (void)
{
 int max ( int,int);
 int a,b,c;
 int *cmax(int,int);
 cmax=max;
 printf("please input two integers:\n");
 scanf("%d %d\n",&a,&b)
 c=(*cmax)(a,b);
 printf("maximum=%d\n",c);
 return 0;
}
 
int max ( int x,int y)
{
 if (x>y)
 return x;
 else
 return y;
}
 
 
pointer functions的例子如下:
输入数字形式的日期,打印出字符串形式
 
int main(int argc, char *argv[])
{
  char *day_name(int ); // pointer functions to char
  int i;
  printf("Please input the day number:\n");
  scanf("%d",&i);
  if(i<0||i>7)
  printf("%s\n",day_name(0));
  else
  printf("The day is:%s\n ", day_name(i));
  system("PAUSE"); 
  return 0;
}
 
char *day_name(int n)
{
 static char *day[]={"Illegal day!",
                     "Monday",
                     "Tuesday",
                     "Wensday",
                     "Thursday",
                     "Friday",
                     "Saturday",
                     "Sunday"
                     };  // pointer array= a set of pointers with the same
                            feature
 
 return day[n];
}
 
通过上面的两个例子,对指针函数和函数指针就有了一个基本了解,还要注意一个很实用的语法:
pointer array,它是一系列同类性质的指针的集合,通常用来存储strings
 
 
 
 
 
 
 
 
阅读(704) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~