C++100条经典面试题

如下:

目录

1.void *(*(* fp1)(int))[10];

2.float(*(* fp2)(int,int,int))(int);

3.int(*(* FP3)())[10]();

4.为什么数组名作为参数,会改变数组的内容,而其它类型如int却不会改变变量的值?  

 


分别表示什么意思?

【标准答案】

1.void *(*(* fp1)(int))[10];

       FP1是一个指针,指向一个函数,这个函数的参数为​​int型,函数的返回值是一个指针,这个指针指向一个数组,

这个数组有10个元素,每个元素是一个无效*型指针。

2.float(*(* fp2)(int,int,int))(int);

FP是一个指针,指向一个函数,这个函数的参数为​​三个int型,函数的返回值是一个指针,这个指针指向一个函数,

这个函数的参数为​​INT型函数的返回值为浮点型。

3.int(*(* FP3)())[10]();

fp3是一个指针,指向一个函数,这个函数的参为空,函数的返回值是一个元素,每个元素是一个指针,指向一个数组,这个函数的参数为​​空。函数的返回值是int型。

 

4.为什么数组名作为参数,会改变数组的内容,而其它类型如int却不会改变变量的值?  

 【参考答案】   当数组名作为参数时,传递的实际上是地址。而其他类型如int作为参数时,

                          由于函数参数值实质上是实参的一份拷贝,被调函数内部对形参的改变并不影响实参的值。

 

你可能感兴趣的:(C++面试,面经)