指针和函数

指针和函数:
函数也是有地址的,称为函数的入口地址,即为函数的指针。

函数的指针和指向函数的指针变量:
指针变量=函数名
Tips:赋予指针变量的值只能是某个函数的函数名,而该函数只能是赋值前已经定义好的函数,
该函数返回值类型必须和定义该指针变量时的“数据类型”保持一致。
     定义的指针变量可以先后指向不同的函数,只要类型一致。
类型说明符(*指针变量名)

用指针变量调用所指向的函数时,需要注意:

1.指针变量必须已经指向了某个函数。

2.数据类型可以是整型、实型、字符型甚至是结构型的数据类型。定义指针变量
据类型和定义函数时的数据类型必须一致。

3.指针变量名是用户所选用的标识符,表示指向函数的指针变量。

4.“*指十变量”必须加据号,因为运算待=的优先级低于运算符().若号成证
的优先级低于“()”,
所以,会是p先和( )结合,代表这是一个函数。
函数的返回值是指向整型的指针。


在定义丽数指针之后,可以通过它间接调用所指向的函数。

同其他类型指针相似、首个函数名赋给函数指针,然后才可以通过函数指针间接调用这个函数。

一个函数指部指向用户自定义的函数,也可以指向由C 语言系统所提供的库函数。


如:

  int funct(int,int); //定义一个函数

  int(*p)(int,int);   //定义一个指向函数的指针变量

  p=funct;          //把函数入口地址赋值给指针变量

指针与指向函数的应用:
#include<stdio.h>
int sum(int x,int y)
{
    int z;
    z=x+y;
    printf("%d\n",z);
 }
 int main()
 {
     int (*p)(int,int);    //定义一个int类型的指向函数的指针变量
     int a=5,b=3;
     p=sum;
     sum(a,b);             //通过函数名调用函数
     (*p)(a,b);            //通过函数指针调用函数
 }
运行结果:
8
8
Tips:
  int (*p)(int,int);表示定义一个int类型的指向函数的指针变量,并不是固定指向一个函数的,而是可以用来只想具有int 函数名(int,int)形式所有函数。 p=sum;只用给出函数名,不用参数。不能写成p=sum(int,int); or p=sum(a,b);

指向函数的指针作为函数参数:
把函数地址作为参数传递到其他函数,在调用过程中就可以使用实参函数。
函数间数据传递:值传递,地址传递,返回值,外部变量传递。(前二需要函数参数传递数据)

指针数组作为函数参数:
以前写int main() 括号为空,表示main()函数无参函数。实际上可有。
如:int main(int argc,char *argv[])
命令名 参数1 参数2 参数3....(参数名和命令行空格隔开)
TipS:由命令行向参数中传递的参数都是以字符串形式出现的,想获得其他类型的参数。
如数字参数,必须在程序中进行相应的转换。

返回指针值得函数:
如:
  int *fun()
  {
    int *p;
    ...
   return(p);
  }
说明,返回值是一个指向整型变量的指针。

字符串指针作为函数参数:
字符串的表示形式:
 char str[80]="need";
 char *p=str;
 printf("%s",str);
 printf("%s",p);
 printf("%s","need");   //输出皆为need
可使直接p指向字符串的开始地址:
 char *p="need";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值