首页 > 编程知识 正文

指针函数有什么用,指针变量

时间:2023-05-04 20:31:36 阅读:61870 作者:2927

来源:点击

函数指针变量

在c语言中,函数始终占用连续的内存空间,函数名称是该函数占用的内存区域的起始地址。 可以将函数的此第一个地址或条目地址指定给指针变量,以便指针变量指向该函数。 然后可以用指针变量找到并调用这个函数。 指向这种函数的指针变量称为“函数指针变量”。

函数指针变量定义的一般格式:

类型说明符(*指针变量名称) );

以函数指针变量的形式调用函数以函数指针变量的形式调用函数的常见形式如下:

*指针变量名称((参考表); 例如int(*pf ) );

指示pf是指向函数入口的指针变量。 此函数的返回值(函数值)为int类型,最后一个方括号表示指针变量指向该函数。

【例】本例用于说明如何以指针形式实现函数调用。

intmax(inta,int b ) if (ab ) return a; else return b; (}int main ) ) intmax ) int b,int b ); //函数maxint(*pmax ) ); //函数用于定义指针变量int x、y、z的pmax=max; 打印机(inputtwonumbers : (n ) ); 扫描(' % d % d )、x、y ); z=(*pmax () x,y ); //函数返回0,用于调用指针变量printf(maxnum=%d ',z ); }从上述程序可以看出,以函数指针变量的形式调用函数的步骤如下。

后者程序的第9行int(*pmax ) ); 将pmax定义为函数指针变量。 以函数指针变量的形式调用函数,该变量将被调制函数的条目地址(函数名称)赋予该函数指针变量,如程序的第11行中的pmax=max。 例如,程序第14行z=(*pmax () x,y ); 使用函数指针变量时,还应注意以下两点:

函数指针变量不能进行算术运算。 这与数组指针变量不同。 如果将整数添加到数组指针变量,指针将指向后面或前面的数组元素,但函数指针的移动没有意义。 函数调用离不开' (*指针变量名称) '两边的括号。 其中的)不应该理解为评价运算,这里只是表示符号。指针型函数

如上所述,函数类型是指函数返回值的类型。 c语言允许一个函数的返回值是指针=地址。 返回这种指针值的函数称为“指针型函数”。

定义指针类型函数的常见格式如下:

类型说明符*函数名称(形参表) ) ) ) ) ) ) ) ) ) ) )。

{

/函数体/

}其中,函数名称前面有“*”,表示这是指针类型函数,返回值是指针。 类型说明符表示返回的指针值指向的数据类型。

例如:

int*AP(intx,int y ) ) )。

{

… /函数体/

}

ap表示指针类型函数返回指向整数变量的指针值。

【例】本程序通过指针函数,输入1~7之间的整数,输出对应的星期几名称。

char*day_name(intn ) /指针类型函数(staticchar*name ) )=(illegalday )、(Monday )、(Tuesday )、(Wednesday )和返回((n1|| n7 )? name[0] : name[n]; (}int main ) ) {int i; char*day_name(intn ); //调用指针类型函数printf(inputdayno:(n ) ); 扫描(' % d ',I ); if(I0 ) exit(1) 1; printf(dayno:----%sn ',I,day_name(i ) I ); 返回0; }在此示例中,定义了指针类型函数day_name,返回值指向字符串。 此函数定义了静态指针数组name。 name数组的初始化值分配给8个字符串,分别表示星期名称和错误消息。 形参n表示与星期名称对应的整数。 在主函数中,使用输入的整数I作为实例,在printf语句中调用day_name函数将I值传递给形参n。 day_name函数的return语句包含表达式,如果n的值大于或小于7,则name[0]指针返回主函数,并输出错误消息字符串" Illegal day "。 否则,返回与主函数的输出对应的星期几名称。 主函数的第7行是条件语句,意思是输入负数(i0 )则中止程序的执行,结束程序。 exit是库函数,exit(1)表示在发生错误后退出程序,exit(1)表示正常结束。 需要特别注意的是函数指针变量和指针型函数的写法和含义的差异。 例如int(p ) )和int(p ) )是两个完全不同的量。

int(p ) ) )是变量的说明,p是指向函数入口的指针变量,该函数的返回值是整形量,表明) p )两边的括号是必不可少的。 int *p )是函数的说明,而不是变量的说明,p是指针类型函数,返回值是完整大小的指针,*p两侧没有括号。 作为函数的说明,为了容易与变量的说明区分,最好在括号内写形式参数。 关于指针类型函数的定义,int *p ) )只是函数的头部,一般应该也有函数体的部分。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。