`

指针函数和函数指针_c语言学习笔记

 
阅读更多
指针函数

1. 概念:指返回指针值的函数。
int *getData ( int num )
{
	static int a[100];		// 定义为staitic类型
	int k;

	if ( num > 100 )	return (NULL);
	for ( k=0; k<num; k++ )
		scanf ("%d", &a[k]);
	return (a);
}

2. 其他函数调用指针函数获取指针后,要在适当的时候,调用 free() 函数释放内存。

3. 指针函数 不能返回 auto 类型局部变量的地址,但可以返回 static 类型变量的地址
    1)auto 型局部变量的生存期很短,返回的指针所对应的内存单元将被释放掉,返回指针也就无效,称为野指针。
    2)static 类型局部变量的生存期等同于全局变量的生存期,因此函数返回时,返回的指针所对应的内存单元不会被释放,返回指针是有效的。
    3)原则:返回的指针所对应的内存空间不能因该指针函数的返回而被释放掉。

4. 指针函数常见返回值情况
    1)函数中动态分配的内存的首地址。
    2)函数中的静态(static)变量或全部变量所对应的存储单元的首地址。
    3)通过指针参数所获得的实参的有效地址。


函数指针

1. 概念:函数名即是该函数的指针,代表该函数的入口地址。函数指针就是指向一个函数的指针变量。可以通过函数指针调用此函数。

2. 定义和赋值:
    函数类型  ( *指针变量 ) ( [ 形参类型1, 形参类型2 ... ] )

int max ( int a, int b )
{
	return ( a>b ? a : b );
}

int (*p)(int, int);		// 定义函数指针p
p = max;				// 将函数max()所对应的内存单元首地址(函数名max)赋给函数指针p
// 或 p = &max;

// 调用方式
p (2, 3);		//等价于 max(2, 3);
(*p) (2, 3);

分享到:
评论

相关推荐

    算法学习_C语言_链表_数据结构应用笔记_1741858703.zip

    在深入探讨压缩包内容之前,首先要明确一点,文件压缩包“算法学习_C语言_链表_数据结构应用笔记_1741858703.zip”是关于计算机科学领域中编程语言C语言的学习资源,特别是聚焦于链表和数据结构在C语言中的应用。...

    C语言100例及教程.rar_C语言 100例_C语言例_c语言 教程

    总的来说,"C语言100例及教程" 是一个全面的C语言学习资源,不仅提供基础理论知识,更强调实践操作,对于想要系统学习和提高C语言技能的人来说,是一份宝贵的资料。通过系统学习和反复实践,学习者可以逐渐掌握C语言...

    程序设计_C语言_入门进阶_学习笔记_1741862616.zip

    C语言的核心概念,如指针、动态内存分配、位操作和控制流等,一直是学习其他编程语言时的重要基础。C语言简洁的语法结构也使得它易于阅读和维护,而它的模块化设计思想更是对现代软件工程产生了深远的影响。 对于...

    编程语言_C语言_基础学习_笔记文档_1741859487.zip

    数组和指针为数据处理提供了更多的灵活性,尤其是在处理大量数据时。结构体则是复杂数据组织的有效方式。 在C语言编程开发中,一个重要的概念是内存管理。C语言提供了灵活的内存操作能力,包括动态内存分配与释放等...

    c语言指针学习笔记

    C语言中的指针是一种基础而...本文档为C语言指针的学习笔记,从基础到深入逐步介绍了指针的概念、定义、初始化、运算和使用。通过本文档的阅读,学习者应能更好地掌握C语言中的指针知识,并在实际编程中正确使用指针。

    C语言指针学习笔记

    ### C语言指针学习笔记知识点解析 #### 一、C语言中的数据类型 在学习C语言的过程中,了解数据类型是非常重要的第一步。数据类型不仅决定了变量所占用的内存大小,还决定了变量的操作方式。 ##### 1. 基本数据...

    编程语言_C语言_程序设计_自学记录_1741863405.zip

    本自学记录包为C语言学习者提供了一套完整的学习体系,通过实例项目的方式让学习者能够将理论与实践相结合,从而更有效地掌握C语言的编程技巧。无论学习者是编程初学者还是有基础的开发者,通过这些实例项目的反复...

    1584007113891_C语言_SuddenlyYou_

    9. **函数指针**:函数指针可以作为参数传递,也可以赋值给其他变量,实现回调函数和模式设计。 10. **递归**:在适当的情况下,使用递归函数可以简化问题的解决,但需要注意调用深度以避免栈溢出。 学习C语言不仅...

    C语言和C++Builder学习笔记.rar_C++笔记_c++学习笔记_c/C++_学习笔记_编程语言

    【C语言和C++Builder学习笔记】 C语言和C++是两种广泛使用的编程语言,它们在软件开发领域占据着重要地位。C语言以其简洁、高效和底层操作能力著称,而C++则在C的基础上引入了面向对象编程,极大地扩展了其应用范围...

    C语言学习笔记_指针

    ### C语言学习笔记_指针 #### 指针的重要性及基本概念 在C语言中,指针是一种非常重要的数据类型,它不仅丰富了C语言的功能,还是衡量开发者是否熟练掌握C语言的关键指标之一。指针能够让程序员像操作低级语言(如...

    C语言学习笔记 C语言学习笔记

    本压缩包包含的“C语言学习笔记”是一份详尽的C语言学习资料,旨在帮助读者深入理解和掌握C语言的基本概念、语法结构以及实际应用技巧。 一、C语言基础 C语言的基础包括变量、数据类型、运算符、流程控制等。变量...

    LAN.rar_C语言

    - 指针:C语言的强项之一,用于高效地处理内存和数据结构,游戏中的动态内存分配、数组、链表等都离不开指针。 - 文件操作:可能需要读写配置文件、保存游戏进度等,C语言提供了标准库函数来进行文件操作。 - 图形库...

    c语言学习笔记劫持函数劫持函数.docx

    "C语言学习笔记劫持函数" C语言学习笔记劫持函数是关于使用C语言实现函数劫持的笔记。函数劫持是指在程序运行时,动态地替换或修改函数的行为,以达到特定的目的。在这个笔记中,我们将使用Detours库来实现函数劫持...

    超强的C语言指针学习笔记.pdf

    ### 超强的C语言指针学习笔记 #### 知识点概览 本文将深入探讨C语言中的指针概念及其复杂声明的理解方法——右左法则。文章将分为以下几个部分进行详细介绍: 1. **指针基础知识回顾** 2. **右左法则详解** 3. **...

    C语言学习笔记基础完整

    指针运算和指针作为函数参数是C语言高级特性。 七、结构体与联合 结构体用于组合不同类型的数据,形成复合数据类型。联合允许在相同的内存空间内存储不同类型的值,根据访问类型切换。 八、内存管理 C语言提供了...

    C语言学习笔记.zip

    本压缩包“C语言学习笔记.zip”包含了丰富的C语言学习资料,主要集中在“c-notes-master”这个子目录下,适合初学者和有一定基础的程序员进行深入学习。 在C语言的学习中,首先要掌握的基本概念包括变量、数据类型...

    c语言学习笔记,好东西

    本压缩包包含了一份精心整理的C语言学习笔记,旨在帮助读者深入理解和掌握C语言的核心概念与技术。 笔记首先从基础语法开始,包括变量、数据类型、运算符以及表达式。C语言中的数据类型有基本类型如int、char、...

    C语言学习笔记.pdf

    ### C语言学习笔记知识点梳理 #### 一、C语言中的函数 C语言中的函数是程序设计的基本单位之一,主要用于组织代码、实现特定功能并能够被重复调用。 1. **函数分类** - **库函数**:由系统提供的标准函数,如`...

    C语言指针、函数指针学习笔记.md

    ### C语言指针、函数指针学习笔记 #### 指针与字符串 在C语言中,指针是一个非常重要的概念。它是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。使用指针可以访问和操作字符串。 **示例代码**: ``...

Global site tag (gtag.js) - Google Analytics