zoukankan      html  css  js  c++  java
  • 学习第26天

    C语言

    1. 函数指针变量调用函数、

      1. 函数在编译时系统会给函数分配一个入口地址、也称为 函数的指针(地址)、

      2. 有地址便可定义一个指针变量指向该函数、然后可以通过指针变量调用该函数、

      3. 函数在执行时会占用一段内存单元、有一个起始地址、有地址就可以用一个指针变量指向一个函数、从而通过指针变量调用、

      4. 函数名代表函数的的入口地址、

      5. 函数指针不能指向函数中间的某一条语句、

      6. 函数指针变量定义——数据类型标识符(*指针变量名)(形参列表);

      7. 数据类型标识符=函数的返回类型、

      8. 可以通过函数指针指向不同的函数、来调用不同的函数、

      9. 函数调用不仅可以通过函数名调用也可以使用函数指针调用、指向函数的指针不能做运算、

      10. int	max(int a, int b)
        {
        	if (a > b)
        		return a;
        	return b;
        	
        }
        int main()
        {
        	int c;
        	int (*e)(int a, int b);//定义函数指针变量、
        	/*注意!!!
        	int *e(int a, int b);这样就成函数声明、括号优先级高、所以变成int* 变成了函数的返回值类型、
        	可以写成int (*e)(int , int );只保留类型、*/
        	e = max;//将函数入口地址赋值给e、e和max的地址是不相同的、max不是真正的函数地址、
        	c =(*e)(19,39);//e地址是真正的函数地址、但打印地址、时、打印的时c的地址、
        	//c = max(9, 18);//常规函数调用、
        	printf("c=%d
        ", c);
        }
        
    2. 把指向函数的指针变量作为函数参数、

      1. int	max1(int a, int b)
        {
        	if (a > b)
        		return a;
        	return b;
        	
        }
        int max2( int a,
        	int b,
        	int(*c)(int a, int b)//形参就是函数指针、
        )
        	{
        	int d = c(a, b);//调用、函数指针c所指向的函数、
        	return d;
        	}
        
        int main()
        {
        
        	int e;
        	e = max2(30, 29,max1);
        	printf("e=%d
        ", e);
        
        	int (*f)(int, int);//定义函数指针变量
        	f = max1;
        	e = max2(3, 59, max1);
        	printf("e=%d
        ", e);
        }
        
    3. 返回指针值的函数、

      1. int d;//解决5行出现的问题、定义全局变量、这样内存就不会被释放、可以一直使用、
        int* a(int b, int c)
        {
        	int  d = b + c;
        	return &d;//!!!有风险、因为d在a函数调用完后会将d的的内存释放、所以、会出现错误、
        }
        
        int main()
        {
        
        	int *e;
        	e = a(4, 8);
        	printf("合是%d
        ",*e);
        

  • 相关阅读:
    第四百八十天 how can I 坚持
    第四百七十九天 how can I 坚持
    第四百七十八天 how can I 坚持
    第四百七十七天 how can I 坚持
    第四百七十六天 how can I 坚持
    《Java基础知识》JDK安装(Linux)
    《Java周边》vue开发环境搭建(windows)
    《Java Spring框架》Spring切面(AOP)配置详解
    《Java知识应用》Java读写DBF文件
    《Java知识应用》Java发送邮件(QQ,163)
  • 原文地址:https://www.cnblogs.com/chengyaohui/p/13672685.html
Copyright © 2011-2022 走看看