第4章指针和引用

时间:2025-04-05

第4章 指针和引用

练习题4

4.1 判断题

× 1.指针是变量,它具有的值是某个变量或对象的地址值,它还具有一个地址值,这两个地址值是相等的。

√ 2.指针的类型是它所指向的变量或对象的类型。

× 3.定义指针时不可以赋初值。

√ 4.指针可以赋值,给指针赋值时一定要类型相同,级别一致。

× 5.指针可以加上或减去一个int型数,也可以加上一个指针。

√ 6.两个指针在任何情况下相减都是有意义的。

√ 7.数组元素可以用下标表示,也可以用指针表示。

× 8.指向数组元素的指针只可指向数组的首元素。

√ 9.指向一维数组的指针是一个二级指针。

× 10.指针数组的元素可以是不同类型的指针。

√ 11.字符指针是指向字符串的指针,可以用字符串常量给字符指针赋值。 × 12.引用是一种变量,它也有值和地址值。

√ 13.引用是某个变量的别名,引用是被绑定在被引用的变量上。

√ 14.创建引用时要用一个同类型的变量进行初始化。

√ 15.指针是变量,它可以有引用,而引用不能有引用。

4.2 单选题

1.下列关于定义一个指向double型变量的指针,正确的是( B )。

A.int a(5);double *pd=a; B.double d(2.5),*pd=&d;

C.double d(2.5),*pd=d; D.double a(2.5),pd=d;

2.下列关于创建一个int型变量的引用,正确的是( A )。

A.int a(3),&ra=a; B.int a(3),&ra=&a;

C.double d(3.1);int &rd=d; D.int a(3),ra=a;

3.下列关于指针概念的描述中,错误的是( B )。

A.指针中存放的是某变量或对象的地址值

B.指针的类型是它所存放的数值的类型

C.指针是变量,它也具有一个内存地址值

D.指针的值(非常量指针)是可以改变的

4.下列关于引用概念的描述中,错误的是( A )。

A.引用是变量,它具有值和地址值

B.引用不可以作数组元素

C.引用是变量的别名

D.创建引用时必须进行初始化

5.已知:int a[5],*p=a;则与++*p相同的是( D )。

A.*++p B.a[0]

C.*p++ D.++a[0]

6.已知:int a[ ]={1,2,3,4,5},*p=a;在下列数组元素地址的表示中,正确的是(C )。

A.&(a+1) B.&(p+1)

C.&p[2] D.*p++

7.已知:int a[3][4],(*p)[4];下列赋值表达式中,正确的是( A )。

A.p=a+2 B.p=a[1]

C.p=*a D.p=*a+2

8.已知:int b[3][5]={0};下列数组元素值的表示中,错误的是( D )。

A.**(b+1) B.(*(b+1))[2]

C.*(*(b+1)+1) D.*(b+2)

9.已知:int a=1,b=2,*p[2];下列表达式中正确的是( C )。

A.p=&a B.p=&b

C.p[0]=&a,p[1]=&b D.p[ ]={&a,&b};

10.已知:int a(5),&ra=a;下列描述中,错误的是( D )。

A.ra是变量a的引用,即为变量的别名 B.ra的值为5

C.ra的地址值为&a D.改变ra的值为10,变量a值仍为5

4.3 填空题

1.单目运算符&作用在变量名左边,表示该变量的 地址值 ,单目运算符*作用在指针名的左边,表示取该变量的 值 。

2.指向一维数组元素的指针是级指针,指向二维数组元素的指针是级指针,指向一维数组的指针是 二 级指针,指向一级指针的指针是 二 级指针,一维一级指针数组名是 二 级指针的地址值,二维数组的数组名是 二 级指针的地址值。

3.在一个二维数组b[3][5]中,b[0]与&b[1]与是等价的。

4.指针的运算有4种,它们是运算、一个指针加减整型数的运算、两个指针相减和 比较 运算。

5.引用不是变量,它是某个变量或对象的引用的值是,引用的地址值是 被引用的变量的地址值 。

4.4 分析下列程序的输出结果

1.

#include <iostream.h>

void main()

{

int a[]={5,4,3,2,1};

int *p=&a[2];

int m(5),n;

for(int i(2);i>=0;i--)

{

}

答: 1

2

3

n=(*(p+i)<*a)?*(p+i):*a; cout<<n<<endl; }

2.

#include <iostream.h>

void main()

{

char *p1,*p2;

p1="abcqrv";

p2="abcpqo";

while(*p1&&*p2&&*p2++==*p1++)

;

int n=*(p1-1)-*(p2-1);

cout<<n<<endl;

}

答: 1

3.

#include <iostream.h>

int a[]={10,9,6,5,4,2,1};

void main()

{

int n(7),i(7),x(7);

while(x>*(a+i))

{

*(a+i+1)=*(a+i);

i--;

}

*(a+i+1)=x;

for(i=0;i<n;i++)

cout<<*(a+i)<<',';

cout<<a[i]<<endl;

}

答: 10,9,7,6,5,4,2,1

4.

#include <iostream.h>

int a[][3]={1,2,3,4,5,6,7,8,9};

int *p[]={a[0],a[1],a[2]};

int **pp=p;

void main()

{

int (*s)[3]=a;

for(int i(1);i<3;i++)

for(int j(0);j<2;j++)

}

答: 4,4,4,4

5,5,5,5

7,7,7,7 cout<<*(a[i]+j)<<','<<*(*(p+i)+j)<<',' <<(*(pp+i))[j]<<','<<*(*s+3*i+j)<<endl;

8,8,8,8

5.

#include <iostream.h>

int a[]={1,2,3,4,5,6,7,8,9};

void main()

{

int *pa=a;

cout<<*pa<<', …… 此处隐藏:3117字,全部文档内容请下载后查看。喜欢就下载吧 ……

第4章指针和引用.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219