• 关于指针函数以及函数指针的一些理解


    函数指针:

    int func(int x); /* 声明一个函数 */

    void (*f) (int x); /* 声明一个函数指针 */

    f=func; /*将func函数的首地址赋给指针f */

    #include<stdio.h>
    int max(int a,int b){return a<b?b:a;}
    int min(int a,int b){return a<b?a:b;}
    int sum(int a,int b){return a+b;}
    int differ(int a,int b){return a-b;} 
    void display(int a,int b,int (*p)(int a,int b)){
    	printf("%d
    ",sizeof(p));
    	printf("%d
    ",p(a,b));
    }
    int main(){
    	int a,b;
    	int (*pl)(int a,int b); 
    	while(~scanf("%d%d",&a,&b)){
    		puts("max: ");display(a,b,max);
    		puts("min: ");display(a,b,min);
    		puts("sum: ");display(a,b,sum);
    		pl=differ;
    		puts("differ ");printf("%d
    ",pl(a,b)); 
    	}
    	return 0;
    }
    

    指针函数:

    返回值为地址;

    定义:int *p(){};

    #include<stdio.h>
    int *f(int *a){
    	for(int i=0;i<5;i++)a[i]=i;a[5]=NULL;
    	return a;
    };
    int main(){
    	int a[10],*p;
    	p=f(a);
    	p[5]=NULL;
    	int i=0;
    	while(i<5)printf("%d ",*(p+i++));puts("");//这时候不能++p,不解 
    	while(i>0)printf("%d ",*(a+ --i));puts("");//这个++a就不能运行。不解 
    	return 0;
    }
    

    两者区别:

    一、加不加括号;

    二、一个是指针变量,一个是函数

    关于函数字节:

    #include <iostream>//对于所有硬件来说,所有指针是 8 个字节的宽度
    int main() {
        std::cout <<
            "sizeof(int*)      == " << sizeof(int*) << "
    "
            "sizeof(double*)   == " << sizeof(double*) << "
    "
            "sizeof(void(*)()) == " << sizeof(void(*)()) << std::endl;
    }
    

      

  • 相关阅读:
    javaScript快速入门
    解决编程式路由往同一地址跳转时会报错的情况
    babel 依赖
    路由拆分可以达到一定程度的性能优化
    正则的扩展
    设计模式
    mysql数据库
    php基本语法
    事件循环
    面向对象编程
  • 原文地址:https://www.cnblogs.com/handsomecui/p/5007056.html
Copyright © 2020-2023  润新知