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
阅读(711) | 评论(0) | 转发(0) |