初学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);
如果函数的返回值,是一个指针的时候,就叫指针函数。
定义语法:
类型 *
函数名(参数列表){
函数体;
}
说到这里,要说一个概念:
内存中有一块区域:栈区,栈区里面放的是局部变量
它有一个特点:出了作用域,作用域内的任何东西都会回收,包括指针函数返回的局部变量;当然全局变量可以用,不过要绕一圈。。
栈区的对面是常量区,专门存储常量的。
然而大家都知道,语言的常量不能改。所以。。。这个概念目前为止,似乎还只是鸡肋。。
注意:用指针函数的话,目前没什么用,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);
相关文章推荐
- c++面向对象程序设计
- 初学C语言----指针深入了解 :结构体指针
- C++运算符重载
- 初学C语言----枚举
- 初学C语言----结构体
- 初学C语言--字符串语法及函数
- 用for语句设置密码
- c++入行的程序员 北漂记 回忆
- C++笔记
- C++十进制转换为任意进制
- C++中关联容器map和set使用说明
- 算法的复杂度——算法的时间复杂度和空间复杂度
- c++ thread detach
- C++删除字符串中特定的字符
- C语言笔记
- 从HALCON12导出程序至Visual Studio VC++工程
- C/C++各种数据类型转换汇总
- C/C++各种数据类型转换汇总
- C++侵入式链表
- C语言中大小写字母的转化