指针函数 与 函数指针

来源:互联网 发布:网络杀毒软件logo 编辑:程序博客网 时间:2024/06/07 15:12

【指针函数】与【函数指针】区别

指针函数:

#include<stdio.h>#include<string.h>#include<stdlib.h>static int data;int *point_func(int x){    data = x;    printf("data's address is %x\n",&data);    printf("data's vaule   is %d\n",data);    return &data;  //返回一个指针(data地址)}int main(){   int *ptr;   ptr = point_func(999);    //将(data地址)赋值给ptr   printf("ptr's address is %x\n",ptr);   printf("ptr's  data is %d\n",*ptr);   return 0;}

输出:
data’s address is 804a01c
data’s vaule is 999

ptr’s address is 804a01c
ptr’s data is 999

函数指针

#include<stdio.h>#include<string.h>#include<stdlib.h>//没有参数,没有返回值void func1(void){    printf("i am func1\n");}void func2(void){    printf("i am func2\n");}//有参数,有返回值int func3(int x){    return (x*x);}//有参数,返回指针static int data;int *point_func(int x){    data = x;    return &data;}//对应的函数指针定义void (*fptr1)();void (*fptr2)();int  (*fptr3)(int x);int * (*fptr4)(int x);int main(){    //两种函数指针赋值方式效果一样    fptr1 = &func1;      fptr2 = func2;  //推荐    (*fptr1)();     //无参数函数指针调用方式    //两种函数指针调用方式效果相同    (*fptr2)();     //推荐       fptr2();       int value = 10;     int value2;     fptr3 = func3;     value2 = (*fptr3)(value); //有参数,有返回值的函数指针调用方式     printf("value2 = %d\n",value2);     fptr4 = point_func;     int * ptr = (*fptr4)(value2);  //有参数,返回指针的函数指针调用方式     printf("*ptr is %d\n",*ptr);     printf("data is %d\n",data);     return 0;}输出:i am func1i am func2i am func2value2 = 100*ptr is 100data is 100
0 0
原创粉丝点击