学习指针时的相关问题
鸣谢 龙大佬同学(手动滑稽
指针和引用的区别
指针可以指向为空,但是引用一旦绑定了对象,就不能更改,而且绑定不能为空
指针相当于菜刀,而引用就是水果刀,指针的功能更多,但是在某一情况下使用引用比较有针对性。
所有指针XX相关的名字属于翻译问题,误导学习者,不合适正确理解学习。推荐看C++ Primer
- 指向函数的指针
- 返回值为“指向函数的指针”的函数
- 参数为“指向函数的指针”函数
从右往左看是一个很好的技巧,编译器设计的时候,扫描是从右往左(LALR),不过总体是从左往右看
指针函数与函数指针
1. 指针函数就是返回值为指针的函数
int *fun(int a){
int *p=&a;
return p;
}
返回值为int类型的指针的名为fun的函数
2. 函数指针就是指向函数的指针
在国外的教材上,一般不用“函数指针”(function pointer)的说法,都是(pointer to function)指向函数的指针,所以弄混是用词概念的问题
int (*fun)(int x,int y); //函数指针就是指向函数的指针
调用方法
fun = function; //方法1
fun = &function; //方法2
fun是一个指针变量
3. 返回值为函数指针的函数指针
定义一个函数指针,指向的函数有两个int形参并且返回一个函数指针,返回的指针指向一个有一个int形参且返回int的函数?
int (*F)(int,int); //名为F的函数指针,指向返回值为int 具有两个int形参的函数
int (*(*F)(int,int))(int) //为题目要求定义的指针
//定义从中间开始看
指针常量与常量指针
常量只有两层意思,一个是字面量,一个是宏定义
const 不是常量!不是常量!不是常量!
const对于一般标量型变量,是指的这个变量不可直接修改
顶层 const,底层const
const int *p; //指针p的指向是const不可修改
int * const p; //指针p指向的int变量对象的值是const的不可修改
指针数组与数组指针
- 指向数组的指针
- 元素为指针的数组
记忆的时候按“元素为int类型指针的数组”比指针数组这样记忆好一点
int *p[]; //定义一个名为p的数组,每一个元素都是int类型的指针(int *)
int (*p)[]; //定义了一个指向元素为int类型数组的指针