(完整word版)C语言指针练习题解析.doc

上传人:公**** 文档编号:548412393 上传时间:2022-11-09 格式:DOC 页数:28 大小:100.04KB
返回 下载 相关 举报
(完整word版)C语言指针练习题解析.doc_第1页
第1页 / 共28页
(完整word版)C语言指针练习题解析.doc_第2页
第2页 / 共28页
(完整word版)C语言指针练习题解析.doc_第3页
第3页 / 共28页
(完整word版)C语言指针练习题解析.doc_第4页
第4页 / 共28页
(完整word版)C语言指针练习题解析.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《(完整word版)C语言指针练习题解析.doc》由会员分享,可在线阅读,更多相关《(完整word版)C语言指针练习题解析.doc(28页珍藏版)》请在金锄头文库上搜索。

1、(完整word版)C语言指针练习题解析一、知识点1 掌握指针、地址、指针类型、空指针(NULL)等概念;2 掌握指针变量的定义和初始化、指针的间接访问、指针的加减运算、指针变量比较运算和指针表达式;3 掌握指针与数组、函数、字符串等的联系;4 掌握动态空间操作(new,delete);5 掌握引用参数的使用。二、例题分析与解答例题1:若有以下定义,则说法错误的是( )。 int a=100,*p=&a ;A声明变量p,其中*表示p是一个指针变量B变量p经初始化,获得变量a的地址C变量p只可以指向一个整形变量D变量p的值为100答案:D分析:有指针变量定义可知A、C说法是正确的,故不能选.在语句

2、中&p=a,表示指针变量取得变量a地址,B说法也正确,也不能选择。D中不能说变量p的值为100,应该p的值为100,所以选择D。例题2:若有以下定义,则赋值正确的是( )。int a ,b , p;float c, q;Ap=&c Bq=p Cp=NULL Dq=new int答案:C分析:指针变量使用规定,不同类型的指针变量不能赋值,也不能取得普通变量地址,故A、B不正确,不能选择.因为q是float类型指针变量,不能申请int 类型地址,D不正确,也不能选择.因为任何类型的指针变量都能取得NULL指针,所以C正确。例题3:如果x是整型变量,则合法的形式是( ).A(x+5)B*xC&*xD

3、&x答案:D分析:因为C+语言表达式没有地址,A不正确.C+语言普通变量不能用*运算,因此B和C也不正确。x表示变量x的地址,&x是x 地址的值,所以D正确。例题4:若要建立如下关系,错误的语句组是( ).span style=msoignore:vglayout; ;zindex:1;left:0px;margin-left:144px;margintop:1px; width:256px;height:38px A B C D int *p=&x, x; int x, p=&x; int *p, x=10; int p, x; p=10; *p=10; p=x; p=&x ; x=10;答

4、案:A分析:在变量类型说明语句中 表示变量是指针变量,在其他语句中,称为指针运算,用于访问指针所指向的对象的值,称为取地址运算,用来得到一个对象的地址。故B、C、D都是正确的,不能选择.A中指针变量p取不到x地址,因为x还没有定义,所以选择A。例题5:若有语句int a10=0,1,2,3,4,5,6,7,8,9,p=a;则( )不是对a数组元素的正确引用(其中0i10).ApiB*((a+i))Cap-aD*(ai)答案:B分析:指针就变量p取得数组a的首地址,由指针与数组关系知,pi表示数组元素第i+1元素值,pi=ai正确,故A不能选.(a+i)表示一维数组a第i+1元素值,(a+i)表

5、示对第i+1元素值再取值是错误操作,所以选B。ap-a=a0正确,故不能选择C。(ai)也正确(见上题),也不能选D。例题6:写出下列程序运行结果是( )。 #include void main() char ch34=“AAA”,”BB”,”CCC”,(q)4=ch, *p; / ch是二维数组, q是指向一维数组指针,并且一维数组每行只有4个字符/q并取得二维数组ch首地址int i; p=new char; /申请地址*p=b; /装入字符b(*q+3)=*p; for(i=0;i3;i+) coutQIA B C D AAAbBB AAAb AAA AAA BB BB bBB BB C

6、CC CCC CCC CCC答案:A分析:二维字符数组初始化后值如下表: 01230AAA01BB02CCC0执行语句*(*q+3)=p后二维字符数组值:01230AAAb1BB02CCC0在输出语句中q0输出是AAAbBB,q1输出是BB,q2输出CCC,只能选择A。例题7:写出下列程序运行结果:includevoid main()int pn, n=10,m=20; float pf, px=3.14159,py=2。71828; pn=n; pn+=m; cout”n 现在的值是: *pnENDL; pf=&px; py+=5*(pf); coutpy现在的值是:”PYENDL; SPA

7、N运行结果是: n 现在的值是: 30pf 现在的值是:18.4262分析:指针是通过在变量前加一个“*”来定义,使用用“*加变量名存取指针所指的值,用运算“”取变量的地址,但是不能存取无指向的指针所指向内容,这样会导致系统故障。例题8:写出下列程序运行结果:includevoid main()int I,p,a=10,20,30,40,50,60; p=a; for(I=0;I5;I+) cout”a“IAIT”*(A+It*(p+”I(P+I)TP“IPIENDL; SPAN运行结果:a0=10 (a+0)=10 (p+0)=10 p0=10 a1=20 (a+1)=20 *(p+1)=2

8、0 p1=20 a2=30 (a+2)=30 (p+2)=30 p2=30 a3=40 (a+3)=40 *(p+3)=40 p3=40 a4=50 *(a+4)=50 *(p+4)=50 p4=50 a5=60 *(a+5)=60 (p+5)=60 p5=60 分析:分析程序根据指针与数组关系,引用数据可以有四种不同的表示方法:使用数组下标变量;使用数据固有的指针数组名间接引用;使用指向数组的指针的间接引用;使用指向数组的指针下标引用。例题9:指出下列程序运行结果:includeint b44=10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25;v

9、oid main()int (*a)4,*p; a=b; /指针变量a,取得二维数组第一行地址p=a1; /指针变量p,取得二维数组第二行第一列地址 for( int I=1;I=4;p=p+1,I+) /A行 cout*pt;coutfor( I=0;I=3;I+) /B行 cout(*a+1)t; a+; /C行coutENDL;运行结果是:14 15 16 1711 15 19 23分析:根据题意,指针变量p取得二维数组第二行第一列地址,进行循环语句后,每循环一次,指针变量下移一个元素,A行循环输出是14,15,16,17.指向一维数组指针a,取得二维数组第一行地址,由指向一维数组指针定

10、义,*a+1表示该行第一列元素地址,(*a+1)表示该地址的值,所以B行输出是11,15,19,23.例题10:写出下列程序运行结果:includevoid fun(int a, int &m) a=new intm; /A int * p=a; for(int i=0;i p+=ii+1; void main() int b,n=5; fun(b,n); for(int i=0;iN;I+) SPAN coutBI cout=a&ai=z) ; /3void main()char p80; cout” n”; cin.getline(p,80) ; /读一行字符,中间可以有空格 change(p); coutPENDL; SPAN如程序运行时得到以下结果:请输入一行字符:This is a book。THIS IS A BOOK。答案:(1)char *a 或 char a80(2) ai 或 ai!=0(3) ai= ai 32或ai-= ai 分析: (1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号