关于函数指针--简介

简介: 函数指针说白了,,,,函数的地址 现在看一个简单的--先定义一个函数指针 void (*f1)();就是这样定义--指向的是一个void类型的 假设定义了另一个 void f2(); 可以 f1 = &f2 或者 f1=f2; 直接代码了 #include #include vo...

函数指针说白了,,,,函数的地址

现在看一个简单的--先定义一个函数指针

void (*f1)();就是这样定义--指向的是一个void类型的

假设定义了另一个 void f2();

可以 f1 = &f2 或者 f1=f2;

直接代码了

#include<stdio.h>
#include<stdlib.h>
void (*f1)(); 
void f2();

void main()
{
  f1=f2;

  (*f1)();
}
void f2()
{   
    printf("11111\n");
}  

 


f1=f2;这个好理解--把f2的地址给了f1呗;
(*f1)();这一句,要想一下*f1中的*在想一想在普通指针中什么意思  取取取取取取  要想--哎呀*f1不就相当于f2吗  所以(*f1)();不就相当于f2();

看下一个

#include<stdio.h>
#include<stdlib.h>
void (*f1)(int x); 
void f2(int x);

void main()
{
  f1=f2;

  (*f1)(2);
}
void f2(int x)
{   
    printf("x=%d\n",x);
}  

 

也没什么难的

void (*f1)(int x); 
void f2(int x);
不过好像这两个的类型要一样,,,现在都是无返回值的带int型的参数的函数
 
 再看下一个

#include<stdio.h>
#include<stdlib.h>
int (*f1)(int x); 
int f2(int x);

void main()
{
  f1=f2;

  (*f1)(2);
}
int f2(int x)
{   
    printf("x=%d\n",x);
    return 0;//必须返回点东西,不然编译会报错
}  

 

运行结果和上面一样--理所当然



#include<stdio.h>
#include<stdlib.h>

void f2();
void f3( void(*f4)() );
void main()
{
    f3(f2);
}
void f2()
{   
    printf("1111\n");
}
void f3( void(*f4)() )  
{
    (*f4)();
}

其实感觉也没什么--和    void f3( *P ){a =*P }  一样的的道理

 
目录
相关文章
|
C语言
C语言:二级指针简介
二级指针即为二级指针变量,用于存放一级指针变量的地址。 一级指针变量是用来存放普通变量的地址(地址其实就是一些数字),一级指针变量也是一个变量,存放普通变量地址的同时自身也是有地址的。那么一级指针变量的地址就需要二级指针变量来存放。
85 0
|
3月前
|
C++
C++(十八)Smart Pointer 智能指针简介
智能指针是C++中用于管理动态分配内存的一种机制,通过自动释放不再使用的内存来防止内存泄漏。`auto_ptr`是早期的一种实现,但已被`shared_ptr`和`weak_ptr`取代。这些智能指针基于RAII(Resource Acquisition Is Initialization)原则,即资源获取即初始化。RAII确保对象在其生命周期结束时自动释放资源。通过重载`*`和`-&gt;`运算符,可以方便地访问和操作智能指针所指向的对象。
|
7月前
|
算法 C++
【C++入门到精通】智能指针 shared_ptr循环引用 | weak_ptr 简介及C++模拟实现 [ C++入门 ]
【C++入门到精通】智能指针 shared_ptr循环引用 | weak_ptr 简介及C++模拟实现 [ C++入门 ]
219 0
|
7月前
|
安全 算法 数据安全/隐私保护
【C++入门到精通】智能指针 shared_ptr 简介及C++模拟实现 [ C++入门 ]
【C++入门到精通】智能指针 shared_ptr 简介及C++模拟实现 [ C++入门 ]
129 0
|
7月前
|
存储 算法 安全
【C++入门到精通】智能指针 auto_ptr、unique_ptr简介及C++模拟实现 [ C++入门 ]
【C++入门到精通】智能指针 auto_ptr、unique_ptr简介及C++模拟实现 [ C++入门 ]
64 0
|
C语言 C++
C++智能指针简介
C++智能指针简介
86 0
|
安全 C++
【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )
【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )
170 0
【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )
|
C++ 容器
智能指针(三):unique_ptr使用简介
我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的au...
747 0
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
105 13