您的位置:首页 > 编程语言 > C语言/C++

初学C语言----指针深入了解 :指针与函数

2015-10-25 17:56 543 查看
指针函数:顾名思义,指针的函数,虽然叫的这么高大上,然而本质上还是一个函数
如果函数的返回值,是一个指针的时候,就叫指针函数
 
 定义语法:
        类型 *
函数名(参数列表){
            函数体;
        }
说到这里,要说一个概念:
 内存中有一块区域:栈区,栈区里面放的是局部变量
 它有一个特点:出了作用域,作用域内的任何东西都会回收,包括指针函数返回的局部变量;当然全局变量可以用,不过要绕一圈。。
 
栈区的对面是常量区,专门存储常量的。
然而大家都知道,语言的常量不能改。所以。。。这个概念目前为止,似乎还只是鸡肋。。
 
注意:用指针函数的话,目前没什么用,C语言中的数据类型只要是局部的都是存在栈里面的。
 
用处的话:只能返回值或字符串常量地址给全局变量,还可以返回静态变量的地址。。。
 
了解就好
————————华丽丽的分割线————————
 
函数指针
函数的指针,本质上一个指针。。。
中心思想:指向函数的指针,就是一个函数指针;
我们可以定义一个指针变量保存函数的地址,那么这样的指针变量就是函数指针
 
例:指针是这样定义的;
 int num = 10;
 int *p = #
 
 而函数指针定义语法:
返回值类型  (*指针变量)(参数列表);
           
例:void (*pTest)(); //变量名:pTest  
这个指针指向的是无返回值也无参数的函数类型
        
void (*pTest2)(int);//变量名:pTest2 
这个指向的是无返回值有1个int类型参数的函数。(当然,有几个返回值都可以,参照函数的概念;)
       
声明方法:直接复制函数头,把大括号去掉,把函数名用一个小括号括起来,函数名前面加一个*,函数名重新改成变量名
 
    指针变量赋值:
            语法:
                指针变量名 =
函数名;
            例: pTest = test;
            因为函数名本身就是一个指向自己函数的地址。。
函数名后面千万不要加()!
函数名后面千万不要加()!
函数名后面千万不要加()!
 重要的事情说三遍!!!
 
在声明的时候初始化:
返回值类型(*指针变量名)(参数列表)=
函数名;
                例:void (*pTest)() = test;
    函数指针的使用:
            1.指针变量名(参数列表);
                pTest();
                pTest2(90);
            2.(*指针变量名)(参数列表);
            例: (*pTest)();
             (*pTest2)(90);
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: