欢迎光临散文网 会员登陆 & 注册

作用域变量重定义

2023-03-19 12:53 作者:鸢Tsubaki  | 我要投稿

/**

 * @file func_pointer.cpp

 * @brief 函数指针的使用!

 * @author 光城

 * @version v1

 * @date 2019-07-20

 */


#include <iostream>

using namespace std;


/**

 * @brief 定义了一个变量pFun,这个变量是个指针,指向返回值为空和参数为int的函数的指针!

 */

void (*pFun)(int);


/**

 * @brief 代表一种新类型,不是变量!所以与上述的pFun不一样!

 */

typedef void (*func)(void);


void myfunc(void)

{

    cout << "asda" << endl;

}


void glFun(int a) { cout << a << endl; }

int main()

{

    pFun = glFun;

    pFun(2);

    func pFun = myfunc; /*赋值*/

    pFun();             /*调用*/

}


在代码中,第一次定义的 pFun 是一个全局变量,它是一个函数指针类型。在全局作用域中定义变量时,这个变量的作用域将覆盖整个程序,直到程序结束为止。因此,在后面的 main 函数中,我们可以直接访问和修改这个全局变量。

main 函数中,我们重新定义了一个名为 pFun 的变量,这次定义是在局部作用域中。由于变量名相同,因此这次定义会隐藏掉全局作用域中的同名变量。在这个局部作用域中,我们将 pFun 定义为 func 类型的变量,这是一个函数指针类型,可以指向返回值为空、无参数的函数。因为这个定义是在局部作用域中进行的,所以它不会影响全局作用域中的同名变量。

因此,在 main 函数中,我们可以同时存在两个名为 pFun 的变量,它们具有不同的类型和作用域。这就是为什么能够在 main 函数中重新定义 pFun


作用域变量重定义的评论 (共 条)

分享到微博请遵守国家法律