函数指针和指针函数指针函数1. 指针函数函数的返回值是 指针类型 。1不能返回是局部作用域的指针。2 希望函数可以连续调用。 在同一个语句里面。 strcpy(str1,strcpy(str3,str2));3希望返回一端内存区域 (数组堆空间)。函数指针一、语法拆解从左到右按优先级解析1.int *(fun)(int)→ 返回 int 指针的函数解析顺序fun(int)fun后面直接跟()说明它首先是一个函数接受一个int类型的参数* fun(...)函数的返回值是一个指针int * fun(...)这个指针指向的是int类型的数据一句话总结fun是一个函数参数是 int返回值是int*int 指针。2.int (*fun)(int)→ 指向函数的指针函数指针解析顺序(*fun)括号强制改变优先级说明fun首先是一个指针(*fun)(int)这个指针指向的是一个函数该函数接受一个int类型的参数int (*fun)(int)这个被指向的函数返回值是int类型一句话总结fun是一个指针指向 参数为 int、返回值为 int 的函数。括号包星是指针星在外面是返回记忆口诀函数名不是指针用时自动变指针。上面所有写法的运行结果完全相同。特别是最后一行(***p1)(1, 2)你对函数指针解引用多少次结果都一样 —— 因为每次解引用得到的函数名又会立刻被转换回函数指针。函数指针到底指向哪里函数指针存储的是代码段中该函数第一条指令的地址。指针函数不指向任何地方它的返回值才是一个指针这个返回值指针会指向某个数据的内存地址回调函数:一个函数被当作参数传递给另外一个函数被传递的参数实际是函数指针取别名 typedfdtypedef unsigned char u8;typedef unsigned short u16;typedef unsigned short u16;int fun(int)fun 是函数返回整数int (*fun)(int)fun 是指针指向返回整数的函数int *(fun)(int)fun 是函数返回整数指针✅函数本身不是指针它是存储在代码段的可执行代码✅函数名在几乎所有场景下都会自动转换为函数指针✅ 这个自动转换是 C 标准规定的目的是简化语法✅ 只有在sizeof、、_Alignof这三个运算符面前函数名才会保持它本来的函数类型
5月29日
发布时间:2026/6/3 4:08:10
函数指针和指针函数指针函数1. 指针函数函数的返回值是 指针类型 。1不能返回是局部作用域的指针。2 希望函数可以连续调用。 在同一个语句里面。 strcpy(str1,strcpy(str3,str2));3希望返回一端内存区域 (数组堆空间)。函数指针一、语法拆解从左到右按优先级解析1.int *(fun)(int)→ 返回 int 指针的函数解析顺序fun(int)fun后面直接跟()说明它首先是一个函数接受一个int类型的参数* fun(...)函数的返回值是一个指针int * fun(...)这个指针指向的是int类型的数据一句话总结fun是一个函数参数是 int返回值是int*int 指针。2.int (*fun)(int)→ 指向函数的指针函数指针解析顺序(*fun)括号强制改变优先级说明fun首先是一个指针(*fun)(int)这个指针指向的是一个函数该函数接受一个int类型的参数int (*fun)(int)这个被指向的函数返回值是int类型一句话总结fun是一个指针指向 参数为 int、返回值为 int 的函数。括号包星是指针星在外面是返回记忆口诀函数名不是指针用时自动变指针。上面所有写法的运行结果完全相同。特别是最后一行(***p1)(1, 2)你对函数指针解引用多少次结果都一样 —— 因为每次解引用得到的函数名又会立刻被转换回函数指针。函数指针到底指向哪里函数指针存储的是代码段中该函数第一条指令的地址。指针函数不指向任何地方它的返回值才是一个指针这个返回值指针会指向某个数据的内存地址回调函数:一个函数被当作参数传递给另外一个函数被传递的参数实际是函数指针取别名 typedfdtypedef unsigned char u8;typedef unsigned short u16;typedef unsigned short u16;int fun(int)fun 是函数返回整数int (*fun)(int)fun 是指针指向返回整数的函数int *(fun)(int)fun 是函数返回整数指针✅函数本身不是指针它是存储在代码段的可执行代码✅函数名在几乎所有场景下都会自动转换为函数指针✅ 这个自动转换是 C 标准规定的目的是简化语法✅ 只有在sizeof、、_Alignof这三个运算符面前函数名才会保持它本来的函数类型