网站已经改版为Wordpress版本,这里是旧版本的快照,请不要在页面中留言.

小悠:闲聊C/C++指针的一些知识点《二》


    本文出自悠然品鉴小悠原创,转载请注明出处:http://www.youranshare.com/blog/sid/94.html

目录

闲聊C/C++指针的一些知识点《一》

闲聊C/C++指针的一些知识点《二》


    在上篇文章中扯到了C++中基本指针和数组指针的应用,接上一篇文章,在本文中小悠将会扯到C++指针中用数组指针作为参数、全局函数指针、以及类内函数指针的使用方法,还是那句话,有扯得不对的地方欢迎大家拍砖.


OK,我们开始本文的内容:

3使用数组作为函数的参数

对于一维的数组就没神马好说的了,直接一个指针就搞定了

对于二维的数组,我们可以使用这两种方法传参数,例如下面的代码:

其中参数 nLine是指定数组有多少行的,没有其他的作用.

 

对于3维数组:

看到了吧,3维的与2维的类似的,他们共同的特点就是要把数组的形式给传递过去

当然你也可以通过指针的转换,将连续内存的数组的指针转换成一维的数组传值,这里就不在详细说明了


4全局函数指针

函数嘛,归根到底是调用对应的函数地址,每一种形式的函数,我们也可以把它看做是一种特殊的类型,在以后的C/C++道路上你会经常用到的.

来看看我们是如何声明一种函数类型的变量的:

在上面的代码中我们可以看出,FuncAType这种类型是形式为   void  func(int a)的函数,其中*FuncAType等价于函数的名称,那么FuncAType 就是函数名称的指针了,所以我们就只定义函数变量了:

FuncAType MyFunc = &funcA;

MyFunc保存了函数的入口地址就能直接使用了,但是我研究发现函数的名称实际上就相当于一个变量,这个变量内存存放的是自身的内存地址,所以我们也这样子用:

FuncAType MyFunc = funcA;

5类内函数指针

要知道类的函数可不是全局的,所以他的调用规则可不是直接将函数指针入栈那么简单的,必须要通过this.指明限定,

如图所示:

我们知道我们定义的函数类型实际上是一个函数名称的指针,在全局函数中函数的名称相当于一个存放了自身指针数值的变量,所以脱不脱指针无所谓,也就是在上面的4中我们的函数也可以这样子调用:


可以执行脱指针操作

但是在类内的话就不行了,如果我们不托指针,在类内根本就没有那种对应的指针类型,this->lp根本没有这个东西,只有脱掉指针,this->*lp才会对应到函数void func(int a);所以这点儿一定要注意.

 

好了教程到此结束.


 


  • 标签:
  • 数组指针
  • 类内函数指针
  • 多维数组参数
网站已经改版为Wordpress版本,这里是旧版本的快照,请不要在页面中留言.