C语言指针练习题解析
更新时间:2023-09-15 12:51:01 阅读量: 资格考试认证 文档下载
一、知识点
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=p C.p=NULL D.q=new int
答案:C
分析:指针变量使用规定,不同类型的指针变量不能赋值,也不能取得普通变量地址,故A、B不正确,不能选择。因为q是float类型指针变量,不能申请int 类型地址,D不正确,也不能选择。因为任何类型的指针变量都能取得NULL指针,所以C正确。
例题3:如果x是整型变量,则合法的形式是( )。
A.&(x+5) 答案:D
分析:因为C++语言表达式没有地址,A不正确。C++语言普通变量不能用*运算,因此B和C也不正确。&x表示变量x的地址,*&x是x 地址的值,所以D正确。
B.*x
C.&*x D.*&x
例题4:若要建立如下关系,错误的语句组是( )。
span
style='mso-ignore:vglayout; ;z-index:1;left:0px;margin-left:144px;margin-top: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; 答案: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≤i<10)。
A.p[i] B.*(*(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:写出下列程序运行结果是( )。 #include void main() {
char ch[3][4]={“AAA”,”BB”,”CCC”},(*q)[4]=ch, *p;
// ch是二维数组, q是指向一维数组指针,并且一维数组每行只有4个字符
//q并取得二维数组ch首地址
C.a[p-a]
D.*(&a[i])
int i;
p=new char; //申请地址 *p=’b’; //装入字符b *(*q+3)=*p;
for(i=0;i<3;i++) cout< }
A. B. C. D. AAAbBB AAAb AAA AAA BB BB bBB BB CCC CCC CCC CCC 答案:A
分析:二维字符数组初始化后值如下表:
0 1 2 0 A B C 1 A B C 2 A \\0 C 3 \\0 \\0 执行语句*(*q+3)=*p后二维字符数组值: 0 1 2 0 A B C 1 A B C 2 A \\0 C 3 b \\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 现在的值是: ”<<*pn<
cout<<”py现在的值是:”<
分析:指针是通过在变量前加一个“*”来定义,使用用“*”加变量名存取指针所指的值,用运算“&”取变量的地址,但是不能存取无指向的指针所指向内容,这样会导致系统故障。
例题8:写出下列程序运行结果: #include void main()
{int I,*p,a[]={10,20,30,40,50,60}; p=a;
for(I=0;I<5;I++)
cout<<”a[“<
<<’\\t’<<”*(p+”<
} 运行结果:
a[0]=10 *(a+0)=10 *(p+0)=10 p[0]=10 a[1]=20 *(a+1)=20 *(p+1)=20 p[1]=20
正在阅读:
C语言指针练习题解析09-15
110-35-10kv变电站设计11-05
护士入党介绍人意见12-28
2016三年级数学上册第六单元平移、旋转和轴对称教案苏教版.docx05-04
钢筋工程施工方案(修改)6.1207-03
算法与程序实践1(简单计算)06-25
高等流体力学复习总结08-18
古建筑图片02-10
安全生产行政执法过错责任追究制度06-02
- 梳理《史记》素材,为作文添彩
- 2012呼和浩特驾照模拟考试B2车型试题
- 关于全面推进施工现场标准化管理实施的通知(红头文件)
- 江西省房屋建筑和市政基础设施工程施工招标文件范本
- 律师与公证制度第2阶段练习题
- 2019-2020年最新人教版PEP初三英语九年级上册精编单元练习unit6训练测试卷内含听力文件及听力原文
- 小升初数学模拟试卷(十四) 北京版 Word版,含答案
- 认识创新思维特点 探讨创新教育方法-精选教育文档
- 00266 自考 社会心理学一(复习题大全)
- 多媒体在语文教学中的运用效果
- 派出所派出所教导员述职报告
- 低压电工作业考试B
- 18秋福建师范大学《管理心理学》在线作业一4
- 中国铝业公司职工违规违纪处分暂行规定
- 13建筑力学复习题(答案)
- 2008年新密市师德征文获奖名单 - 图文
- 保安员培训考试题库(附答案)
- 银川市贺兰一中一模试卷
- 2011—2017年新课标全国卷2文科数学试题分类汇编 - 1.集合
- 湖北省襄阳市第五中学届高三生物五月模拟考试试题一
- 练习题
- 指针
- 解析
- 语言
- 班主任带教导师资料袋 - 图文
- 探讨农村小学美术教育现状
- 证券投资技术分析论文
- 船舶概论考试题A
- 天气开始变凉了,你家的露台阳光房做了吗?
- 整合高中历史选修三第四单元第2课冷战的开始教案 精品
- 居配工程竣工资料目录规范
- 康复新液治疗复发性口腔溃疡的临床疗效观察
- (修改1)巴渝杯汇报材料附件:2012年度重庆市巴渝杯优质工程奖评选结果公示
- 雨季施工方案 - 图文
- 倒车防撞控制原理的研究和探讨
- 门诊部工作制度
- 浅谈城市排水系统的重要性和发展
- 比较英美法德四国代议制的不同
- Heateam团队周末社会实践标书
- 微机原理试题库(1)
- 管理会计名词解释及简答题
- 潜能生转化计划及措施
- 新人教版九年级物理欧姆定律专项练习题
- 最新20182019年5月优秀大学生入党申请书范文3000字-精选word文档(3页)