- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、知识点
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说法是正确的,故不能选。在语句中p=a,表示指针变量取得变量a地址,B说法也正确,也不能选择。D中不能说变量p的值为100,应该*p的值为100,所以选择D。例题2:若有以下定义,则赋值正确的是( )。
int a ,b , *p;
float c, *q;
A.p=c B.q=pC.p=NULL D.q=new int
答案:C
分析:指针变量使用规定,不同类型的指针变量不能赋值,也不能取得普通变量地址,故A、B不正确,不能选择。因为q是float类型指针变量,不能申请int 类型地址,D不正确,也不能选择。因为任何类型的指针变量都能取得NULL指针,所以C正确。例题3:如果x是整型变量,则合法的形式是()。
A.&(x+5) B.*xC.*xD.*x
答案:D
分析:因为C++语言表达式没有地址,A不正确。C++语言普通变量不能用*运算,因此B和C也不正确。x表示变量x的地址,*x是x 地址的值,所以D正确。
例题4:若要建立如下关系,错误的语句组是( )。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;
答案:A
分析:在变量类型说明语句中 *表示变量是指针变量,在其他语句中,*称为指针运算,用于访问指针所指向的对象的值,称为取地址运算,用来得到一个对象的地址。故B、C、D都是正确的,不能选择。A中指针变量p取不到x地址,因为x还没有定义,所以选择A。例题5:若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正确引用(其中0≤i10)。
A.p[i]B.*(*(a+i)) C.a[p-a] D.*(a[i])
答案:B
分析:指针就变量p取得数组a的首地址,由指针与数组关系知,p[i]表示数组元素第i+1元素值,p[i]=a[i]正确,故A不能选。*(a+i)表示一维数组a第i+1元素值,*(*(a+i)表示对第i+1元素值再取值是错误操作,所以选B。a[p-a]=a[0]正确,故不能选择C。*(a[i])也正确(见上题),也不能选D。例题6:写出下列程序运行结果是( )。#includevoid main(){
char ch[3][4]={“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++) coutQ[I]ENDL; SPAN
}
A.B.C.D.AAAbBBAAAbAAAAAABBBBbBBBBCCCCCCCCCCCC
答案:A
分析:二维字符数组初始化后值如下表:0 1 2 3 0 A A A \0 1 B B \0 ? 2 C C C \0 执行语句*(*q+3)=*p后二维字符数组值:0 1 2 3 0 A A A b 1 B B \0 ? 2 C C C \0 在输出语句中q[0]输出是AAAbBB,q[1]输出是BB,q[2]输出CCC,只能选择A。例题7:写出下列程序运行结果:
#include
void main()
{int *pn, n=10,m=20;
float *pf, px=3.14159,py=2.71828;
pn=n;
*pn+=m;
cout”n 现在的值是: ”*pnENDL; SPAN
pf=px;
py+=5*(*pf);
cout”py现在的值是:”PYENDL; SPAN
}
运行结果是:
n 现在的值是: 30
pf 现在的值是:18.4262
分析:指针是通过在变量前加一个“*”来定义,使用用“*”加变量名存取指针所指的值,用运算“”取变量的地址,但是不能存取无指向的指针所指向内容,这样会导致
您可能关注的文档
最近下载
- 农村生活污水改造工程-施工设计方案.doc VIP
- 昆明市筇竹寺地区地质填图精讲.doc VIP
- (完整word版)新概念英语第3册课文word版.pdf VIP
- 菲律宾结构设计规范NSCP chapter 4c.pdf VIP
- D-Z-T 0405-2022 无人机航空磁测数据采集技术要求(正式版).docx VIP
- 高层住宅水电暖安装工程的组织与实施计划.docx VIP
- 破壁料理机食谱大全奥克斯篇.pdf VIP
- 金航联执业药师继续教育《功能性消化不良的中西药治疗策略》习题答案.docx VIP
- 2025年华医网继续教育CRRT在急诊重症患者中的临床应用答案.docx VIP
- 菲律宾结构设计规范NSCP chapter 4b.pdf VIP
文档评论(0)