`
hzy3774
  • 浏览: 992145 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

C指针函数与函数指针

 
阅读更多

指针函数一般是指返回指针的函数;

#include <stdio.h>

int* fun(int *a)
{
	return a;
}

int main(int argc, char **argv)
{
	int a = 3;
	printf("%d", *(fun(&a)));
	return 0;
}

 

函数指针是表示指向函数开始地址的指针:

首先要了解函数的调用过程:

#include <stdio.h>

int fun(int i)
{
	return i + 1;
}

int main(int argc, char **argv)
{
	int r;
	//r = fun(5);
	r = (*fun)(5);		//调用方式
	printf("%d\n", r);
	return 0;
}

  函数可以用r = (*fun)(5);来调用,说明函数名其实是一个指针,

通过(*fun)来寻址。所以我们就可以定义一个指针

#include <stdio.h>

int fun(int i)
{
	return i + 1;
}

int main(int argc, char **argv)
{
	int r;
	int (*funP)(int);	//声明指针
	//funP = fun;		//给指针赋值
	funP = &fun;
	r = funP(5);
	printf("%d\n", r);
	return 0;
}

 

所以,给函数指针赋值也有两种方式;
同样,通过函数指针调用函数的方式也有两种:
#include <stdio.h>

int fun(int i)
{
	return i + 1;
}

int main(int argc, char **argv)
{
	int r;
	int (*funP)(int);	//声明指针
	funP = fun;		//给指针赋值
	//r = funP(5);
	r = (*funP)(5);		//调用
	printf("%d\n", r);
	return 0;
}
 也就是说,除了声明的地方,fun()与(*fun)()的作用是一样的。
这样,也就让C语言容易实现类似于回调函数的结构:
#include <stdio.h>

int funA(int i)
{
	return i + 1;
}

int funB(int i)
{
	return i - 1;
}

void fun(int (*funP)(int), int i)
{
	printf("%d\n", funP(i));
}

int main(int argc, char **argv)
{
	int (*funP)(int);	//声明指针
	funP = funA;		//给指针赋值
	//funP = funB;		//给指针赋值

	fun(funP, 5);		//调用
	return 0;
}
 在fun()函数里,它做的只是在某个时候调用一个funP指针指向的函数,至于是哪个函数,在fun函数的定义处还无从得知;直到将funA赋给函数指针funP,funP具体要做什么功能,才得以确定。
也就是说,main函数决定fun函数需要帮它实现什么函数代码,但是fun何时调用以及是否调用main给他的函数,那是由fun()来决定。
分享到:
评论

相关推荐

    C语言指针函数和函数指针详细介绍.

    C语言指针函数和函数指针详细介绍 C语言中指针函数和函数指针是两个不同的概念,但它们之间存在着紧密的联系。本文将对C语言中的指针函数和函数指针进行详细的介绍。 一、指针函数 指针函数是指返回值为指针的...

    c语言函数指针和指针函数.pdf

    函数指针是 C 语言中的一种特殊的指针,它可以指向函数的地址,而不是变量的地址。函数指针的定义格式为:`返回类型 (*指针变量名)(参数列表)`,其中返回类型是函数的返回类型,指针变量名是函数指针的名称,参数...

    详细介绍C语言指针函数和函数指针

    需要注意的是,指针函数返回的地址指向的数据类型需要与指针函数声明的类型说明符相匹配。 指针的指针(二级指针),是另一个层次的概念。如果指针变量是用来存放另一个指针变量地址的话,我们称之为指针的指针。其...

    C语言函数指针与指针函数训练.zip

    它与函数指针不同,但经常一起使用。例如,我们可以创建一个返回指向字符串的指针的函数: ```c char* getGreeting() { static char greeting[] = "Hello, World!"; return greeting; } ``` 在实际编程中,函数...

    函数指针和指针函数的区别

    在C/C++编程语言中,函数指针和指针函数是两个不同的概念,虽然它们都涉及到指针和函数,但其用法和含义各有特点。理解这两者的差异对于编写高效、灵活的代码至关重要。 首先,我们来解释"函数指针"。函数指针是一...

    指针函数和函数指针变量

    在C语言中,指针和函数是两个非常重要的概念,而将它们结合在一起,就产生了指针函数和函数指针变量。这两个概念是C语言高级特性的体现,它们在编程中有着广泛的应用,如回调函数、动态加载库、内存管理等。 首先,...

    函数指针与指针函数应用程序

    在这个“函数指针与指针函数应用程序”中,我们将深入探讨这两个核心主题。 首先,我们要理解函数指针。函数在C/C++中被视为对象,可以被赋值、传递和返回。函数指针就是一个指向函数的指针,它存储了函数在内存中...

    c语言指针总结 函数指针 指针函数

    ### C语言指针详解:函数指针与指针函数 #### 第十章 指针 **一、指针的基本概念** 指针是C语言中一个非常重要的概念,它允许程序员直接操纵内存地址,这对于提高程序效率至关重要。理解指针的基础概念是学好...

    函数指针和指针函数,const的用法,指针常量,常量指针的用法

    #### 函数指针的理解与使用 **函数指针**是一种特殊的指针类型,它可以用来存储函数的地址,进而通过该指针来调用函数。理解函数指针的关键在于认识到函数也是一种具有特定地址的实体。 ##### 定义函数指针 函数...

    C语言指针数组函数笔记

    "C语言指针数组函数笔记" 本笔记主要介绍了C语言中的指针和数组相关知识点,旨在帮助读者更好地理解和应用C语言中的指针和数组。 一、变量和内存 在C语言中,变量是存储数据的基本单元。变量可以是整数、浮点数、...

    详解函数指针和指针函数

    【函数指针】是C语言中一种强大的特性,它允许我们使用指针来直接操作函数。函数在程序中被看作是一种数据类型,因此可以像处理其他数据一样处理它们,包括赋值、传递和作为参数。函数指针的定义包含了函数的返回...

    函数指针和指针函数的理解

    ### 函数指针与指针函数的理解 #### 一、函数指针与指针函数的基本概念 在C语言中,函数指针和指针函数是两个重要的概念,它们经常出现在较为复杂的程序设计中,尤其在回调函数、动态绑定等场景中发挥着重要作用。...

    函数指针和指针函数

    在C语言中,函数指针和指针函数是两种不同的概念,它们在程序设计中扮演着重要的角色。这里我们将详细探讨这两个概念以及它们的作用。 **函数指针:** 函数指针是一个指向函数的指针变量,它存储了函数的入口地址。...

    C语言指针函数和函数指针.rtf

    c语言指针一、指针函数 当一个函数声明其返回值为一个指针时,实际上就是返回一个地址给调用函数,以用于需要指针或地址的表达式中。 格式: 类型说明符 * 函数名(参数) 当然了,由于返回的是一个地址,所以类型...

    指针函数与函数指针

    ### 指针函数与函数指针:深入解析与应用 #### 一、指针函数:函数返回指针的艺术 指针函数,顾名思义,是指那些返回值为指针类型的函数。这类函数通常用于返回某个数据结构的地址,如数组、结构体等,以便在函数...

    C语言指针求指针函数参数.cpp

    C语言指针求指针函数参数.cpp

    指针函数与函数指针区别.docx

    指针函数与函数指针的区别 指针函数和函数指针是C语言中两个重要的概念,但很多初学者却容易将它们混淆。那么,什么是指针函数和函数指针呢?它们有什么区别呢? 指针函数 指针函数是指返回值类型为指针的函数。...

    学习c语言函数指针和指针函数.pdf

    C语言中的函数指针和指针函数是两个关键概念,它们允许我们以更灵活的方式处理函数,实现回调机制、动态绑定以及在运行时决定调用哪个函数等功能。 1. **函数指针**: - 函数指针是一种特殊的指针变量,它存储的是...

    函数指针与指针函数

    ### 函数指针与指针函数详解 在深入探讨函数指针与指针函数之前,我们首先需要理解几个基础概念:变量、数组、指针以及它们之间的关系。 #### 变量与指针 变量是在内存中分配的一个存储区域,用于存放特定类型的...

    c语言指针函数修改变量的值

    c语言指针修改函数内部变量的值

Global site tag (gtag.js) - Google Analytics