分享

04选择题: C++ 指针函数

 雪柳花明 2017-03-07
函数fun的声明为int fun(int *p[4]),以下哪个变量可以作为fun的合法参数()

int **a;


函数参数形参是一个指向指针的指针(作为参数时与数字4无关,相当于int**),

可以看出fun函数的形参是一个指针数组,也就是指针指向一个地址,地址中存放的内容也是指针。
A,二维数组,不符合
B,二级指针,也就是指针指向的内容也还是存放指针的,符合
C,二级指针数组,数组的内容是二级指针,不符合
D,数组指针,不符合



#include<iostream>
using namespace std;
//在函数中, 数组退化为指针, 所以int *[4]在函数中实际相当于int **,与4无关
int fun(int *p[4]){        
    int sum = 0;
    for(int i=0; i<5; i++)
        sum += *p[i];
    return sum;
}
 
int main(){
 
    int arr[5] = {1,2,3,4,5};
    int *parr[5] = {arr, arr+1, arr+2, arr+3, arr+4};
    int **xxx = parr;                         
 
    //parr类型int *[5],传递给fun()时会检查parr能否传递给
        //形参类型int *[],这里显然是可以传递的。
        //而进入函数后 形参p将退化为int **
    cout << fun(parr) << endl;  //正确
    cout << fun(xxx) << endl;   //正确
 
    return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多