C++ Primer学习笔记内容介绍
这第七章没有任何出彩的地方,所以作者在最后给出个指向函数的指针,指向函数的指针,先拽点名词,问:函数的指针和指向函数的指针是同是异?函数的名字被解释成指向函数的指针,想一想这是顺理成章的故事。
为什么要引出个指向函数的指针呢?
我自认为:这东西有大用处.正如书上所说,这个技术使函数有分支预测的能力,会获得不同的结果,想来有些重载函数的意味,但是我们知道重载的函数之间是靠参数的差异来区别重载函数的不同的,而以函数指针为参数的函数表面看来,甚是相同。
问:void print( int arr[][], int size );这个函数声明是对是错?
当然是错的了,这个根本不是什么函数声明的问题,而是数组声明的问题,int arr[][]这个声明就是错的,后面一维的长度不可省略!
问:char* ScreenInit(int height = 120; int width; char background);这个声明如何?
这个不能算是错的,要看它前面的具体情况,如果单单是看这一个函数声明当然是错误的了,因为如果height的前面没有缺省的参数值,则此声明wrong!
问:int putvalues( (&ia)[] ); 又如何?
错,引用必须知道所倚数组的大小!
函数的缺省参数之间是互补的关系,所以对于每一个参数不能重复的声明两次缺省参数。
对于以数组为参数的函数来说比如:
void putvalues( int* );
void putvalues( int[] );
void putvalues( int[ 10 ] );
都是相同的!为什么会这样呢?
我们知道函数的参数不会检查数组的长度所以说int[100000]和
int[10]没有任何的不同,对于函数参数来说,所以就有错误发生,毕竟
int[100000]和int[10]本身是不同的呀,在参数处理的时候会有潜在的错误!
本文地址:http://www.45fan.com/a/question/69900.html