C语言指针练习题集
需积分: 19 117 浏览量
更新于2024-08-27
收藏 35KB DOCX 举报
"C指针练习.docx"
C指针是C语言中的一个重要概念,它允许程序员直接操作内存地址,提供了高效的数据操作和管理能力。针对新手的指针练习题可以帮助理解并熟练掌握这一核心概念。
1. 在选择题中,选项A "a,point,*&a" 是一组代表地址的选项。因为`a`是一个整型变量的名称,代表其存储地址;`point`是一个指向整型变量的指针,同样代表地址;`*&a`是一个解引用操作,它会给出`a`的值,而不是地址,所以不是地址选项。
2. 代码段 "int*p,m=5,n; 以下正确的程序段是:p=&n;" 显示正确赋值指针`p`指向变量`n`的地址。其余选项或语法错误,或未初始化指针,或试图对未初始化的指针解引用。
3. 错误的`scanf`调用 "Scanf(“%d”,*p);" 的原因在于`*p`表示的是变量`a`的值,而不是变量`a`的地址,因此应使用`&a`来传递地址给`scanf`。
4. 下面的程序:
```c
int m=1,n=2,*p=&m,*q=&n,*r;
r=p;
p=q;
q=r;
printf("%d,%d,%d,%d,\n",m,n,*p,*q);
```
执行后,指针`p`和`q`发生了交换,但`r`仍然指向`m`的地址,因此输出结果为 `1,2,2,1`。
5. 以下程序:
```c
int a=1,b=3,c=5;
int *p1=&a, *p2=&b, *p=&c;
*p=*p1*(p2);
printf("%d\n",c);
```
执行后,`c`的值被设置为`a`和`b`的乘积,即`3`。
6. 当执行 `A=p1==&m;` 后,`A`的值取决于`p1`是否等于`&m`。在这里,`p1`最初指向`k`,而`&m`是`m`的地址,两者不等,因此`A`的值为`0`。
7. 在16位系统上,定义 `inta[]={10,20,30},*p=&a;`,执行`p++`后,`p`向高地址移动了一个存储单元,即2个字节(因为一个整型通常占2个字节),所以选项B和C是错误的。`p`与`a+1`等价,意味着它现在指向数组中的第二个元素。
8. 代码段 `int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];` 中,`b`的值是`p`所指数组位置的第五个元素,即`8`。
9. 对于定义 `int a[5],*p=a;`,正确引用数组`a`的元素包括 `*p`(第一个元素),`p[0]`(第一个元素),`p[1]`(第二个元素),等等。`&a[0]`等价于`a`或`&p[0]`,都是数组的第一个元素的地址。`*(&a[2]+1)`则表示数组的第三个元素。
通过这些练习题,初学者可以深入理解指针的概念,包括指针的赋值、解引用、数组和指针的关系以及指针算术操作。熟悉这些基础知识对于理解和编写更复杂的C程序至关重要。
2012-04-07 上传
2021-11-15 上传
2022-11-15 上传
2023-02-27 上传
2021-01-22 上传
2021-12-27 上传
2023-03-09 上传
白告月当空照丶
- 粉丝: 2
- 资源: 1
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明