zoukankan      html  css  js  c++  java
  • 简述static关键字、void与void *(void指针)、函数指针

    static关键字
    1.修饰局部变量,延长局部变量的生命周期。
    使变量成为静态局部变量,在编译时就为变量分配内存,直到程序退出才释放存储单元。
    2.修饰全局变量,限制全局变量的使用范围为本文件中。
    全局变量默认为静态全局变量,在编译时就为变量分配内存,直到程序退出才释放存储单元。
    3.修饰函数,限制函数的使用范围为本文件中。
    使函数成为静态函数,对函数的连接方式产生影响。如果想让内部函数被外界引用,可在函数前添加extern修饰。

    void与void *(void指针)
    1.void 即‘无类型’,void * 即‘无类型指针’,可以指向任何数据类型。
    例如:
    int * print;
    void * pvoid;
    pvoid = print;

    2.void的作用
    a.对函数返回的限定,例如:
    void func (int ,int)
    b.对函数参数的限定,例如:
    int func(void)

    3.void *的作用
    a.作为形参,在函数中传递,表示任意类型,例如:
    void * func (void *para1,void *para2)

    函数指针
    a.函数指针是什么?
    一个函数占用一段连续的内存地址,当调用一个函数时,实际上是跳转到函数的入口地址,执行函数体代码,然后返回。
    函数的入口地址怎么确定呢,它是由函数名标记的,实际是函数名就是函数的入口地址。
    函数指针是一种特殊的指针,它指向函数的入口。

    b.如何定义一个函数指针变量?
    定义两个函数
    int func1(int arg1,char arg2)
    int func2(char arg2)
    定义两个函数指针变量
    int (* pfunc1) (int,char) = func1
    int (* pfunc2) (char) = func2
    只有相同的函数指针类型才可以赋值。

    c.如何区别两个函数
    函数指针类型是由函数签名决定的,函数签名是函数的身份证,不同类型函数的函数签名是不一样的。
    同理,具有相同函数签名的两个函数是同一个函数。
    函数签名的组成部分包括:函数名,函数形参的有序列表,函数返回值类型。

    d.函数指针的组成部分包括:函数形参的有序列表,函数返回值类型。

  • 相关阅读:
    open()函数与读写文件
    vim编辑器常用操作
    strip()函数---去除字符串首尾字符
    Python中字符串转义的用法
    shell中内置字段的分隔符IFS
    shell中整数变量自增用法
    shell中EOF的用法
    shell变量字符串截取
    shell中的“数组”
    年终总结:想的多了就该敷衍性得记录一下
  • 原文地址:https://www.cnblogs.com/zhou--fei/p/7688204.html
Copyright © 2011-2022 走看看