C++菜鸟来提问:请求详细解答哈,谢谢你!1.有如下定义: int a[5]={1,3,5,7,9}, *p=a;下列表达式中不能得到数值5的是().A a[2] B a[3] C *(p+2) D *p+4 答案A我觉得应该是B才

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 04:21:02

C++菜鸟来提问:请求详细解答哈,谢谢你!1.有如下定义: int a[5]={1,3,5,7,9}, *p=a;下列表达式中不能得到数值5的是().A a[2] B a[3] C *(p+2) D *p+4 答案A我觉得应该是B才
C++菜鸟来提问:请求详细解答哈,谢谢你!
1.有如下定义: int a[5]={1,3,5,7,9}, *p=a;下列表达式中不能得到数值5的是().
A a[2] B a[3] C *(p+2) D *p+4 答案A
我觉得应该是B才对呀?

2.这两个小题想请问 为什么第二个就没选C p[5]呢?不然就和第一个小题矛盾了.
设有int a[20], *p=x; 则下面中哪个与x[1]不等().
A p[1] B *++p C *++a D *(a+1) 答案A
设有int a[10], *p=a ;则下面哪种表示与a[5]不等价().
A *(a+5) B *(p+5) C p[5] D p+5 答案D
3.这样的指针用法为什么错误:定义有 int i; int*p; i=*p; ?
不是在交换操作中 也出现了类似的东西吗?如下:
void swap(int *p1,int *p2)
{ int t;
t=*p1;
*p1=*p2;
*p2=t;
}
我是C++菜鸟 请您详细回答哦 呵呵!

C++菜鸟来提问:请求详细解答哈,谢谢你!1.有如下定义: int a[5]={1,3,5,7,9}, *p=a;下列表达式中不能得到数值5的是().A a[2] B a[3] C *(p+2) D *p+4 答案A我觉得应该是B才
int main(int argc, char *argv[])
{
       
    int a[5]={1,3,5,7,9}, *p=a;
    for(int i=0;i<5;i++)
        cout<<i<<"\t";
    cout<<endl;
    for(int i=0;i<5;i++)
        cout<<a[i]<<"\t";
    cout<<endl;
    return 0;
}

你可以去执行以下.答案是A.

数组的下标是从0开始的.

2.

第二题,答案有误

int main(int argc, char *argv[])
{
int a[5]={1,3,5,7,9}, *p=a;
cout<<p[1]<<endl;
cout<<*++p<<endl;
cout<<*++a<<endl;
cout<<*(a+1)<<endl;
return 0;
}


编译器报错

c++ 中数组和指针是两个不同的概念.数组名虽然看起来很像是一个指针,但是又和指针不是一个东西.

cout<<*++a<<endl;这句话执行失败.原因

【数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;】

数组名是指针常量.自加操作时不可实现的.

答案应该是C


3.最后一个是因为你定的是一个函数.函数并没有执行.如果执行的时候你再传一个空指针或者野指针进去,执行必然是要失败的.