首页 > 试题广场 >

已知int a[]={1,2,3,4,5};int*p[]=

[单选题]
已知int a[]={1,2,3,4,5};int*p[]={a,a+1,a+2,a+3};int **q=p;表达式*(p[0]+1)+**(q+2)的值是____。
  • 5
  • 6
  • 7
  • 8
  • 4
  • 9
int a[]={1,2,3,4,5};
int*p[]={a,a+1,a+2,a+3};
int **q=p;

*(p[0]+1)+**(q+2)
其中p[0]=a也就是a[0]的地址,
p[0]+1=a+1就是a[1]的地址,
*(p[0]+1)就是a[1]的值就是2,
**q=p  --> *q=&p  -->表示q保存的是p 的地址,q+2表示p[2]的地址,*(q+2)表示p[2],
**(q+2)表示*p[2]表示*(a+2)就是a[2]的值就是3,
所以
*(p[0]+1)+**(q+2)=5
发表于 2015-06-04 11:44:47 回复(2)
p[0]+1=a+1;
*(p[0]+1)=2;
*(q+2)=a+2;
*(a+2)=3;
3+2=5;


编辑于 2015-04-25 20:00:53 回复(2)
#include <iostream>
using namespace std;
int main()
{
    int a[]={1,2,3,4,5};
    int* p[]={a,a+1,a+2,a+3};
    int **q = p;
    cout<<"a:"<<a<<endl;
    cout<<"p:"<<p<<endl;
    cout<<"p+1:"<<p+1<<endl;
    cout<<"*p:"<<*p<<endl;
    cout<<"p[0]:"<<p[0]<<endl;
    cout<<"p[0]+1:"<<p[0]+1<<endl;
    cout<<"*(p[0]+1):"<<*(p[0]+1)<<endl;   
    cout<<"q:"<<q<<endl;
    cout<<"q+2:"<<q+2<<endl;
    cout<<"*q:"<<*q<<endl;
    cout<<"*(q+2):"<<*(q+2)<<endl;
    cout<<"**(q+2):"<<**(q+2)<<endl;
    return 0;
}

a:0x7ffe3a55f980
p:0x7ffe3a55f960
p+1:0x7ffe3a55f968
*p:0x7ffe3a55f980
p[0]:0x7ffe3a55f980
p[0]+1:0x7ffe3a55f984
*(p[0]+1):2
q:0x7ffe3a55f960
q+2:0x7ffe3a55f970
*q:0x7ffe3a55f980
*(q+2):0x7ffe3a55f988
**(q+2):3


发表于 2018-05-09 15:59:35 回复(0)
#include <iostream>

using namespace std;

int main()
{
    int a[]={1,2,3,4,5};
    int*p[]={a,a+1,a+2,a+3};
    cout<<"a:"<<a<<endl;
    cout<<"p:"<<p<<endl;
    cout<<"p[0]:"<<p[0]<<endl;
    cout<<"p[0]+1:"<<p[0]+1<<endl;
    cout<<"*(p[0]+1):"<<*(p[0]+1)<<endl;
    int **q = p;
    cout<<"q:"<<q<<endl;
    cout<<"q+2:"<<q+2<<endl;
    cout<<"*(q+2):"<<*(q+2)<<endl;
    cout<<"**(q+2):"<<**(q+2)<<endl;
    return 0;
}


a:0x28fee8
p:0x28fed8
p[0]:0x28fee8
p[0]+1:0x28feec
*(p[0]+1):2
q:0x28fed8
q+2:0x28fee0
*(q+2):0x28fef0
**(q+2):3

发表于 2016-09-07 22:07:24 回复(0)
int **p=q意思是:p本身是一个指针,p指向一个指针。  q=&p , q存的是p的地址。

发表于 2016-04-16 14:48:57 回复(0)
要是能在这里留下这道题的解题思路,就再好不过啦
发表于 2015-04-24 15:28:50 回复(0)