C语言学习:指针专题与练习
版权申诉
193 浏览量
更新于2024-07-08
收藏 132KB PDF 举报
"C语言习题集合(指针)"
在C语言中,指针是一个非常重要的概念,它允许我们直接操作内存地址,实现高效的数据处理和复杂的程序设计。本习题集主要关注指针相关的知识,涵盖了选择题的形式,旨在帮助学习者深入理解和应用指针。
1. 非法赋值语句的识别:
在C语言中,指针可以被赋值为其他指针的值,或者通过解引用操作赋值给它所指向的变量。但指针不能直接赋值为整型变量,因为它们代表的是内存地址。因此,选项D `q=a;` 是非法的,因为`q`是一个指针,而`a`是一个整数。
2. 指针解引用与输出:
`*b` 表示`b`所指向的变量的值,因此`printf("%d\n", *b);`会输出`b`指向的变量的值,即`a`的值。如果`a`被初始化为511,那么输出结果将是511,所以正确答案是D。
3. 赋值语句的正确性:
A选项`a=*p1+*p2;`是合法的,因为它将两个指针所指向的变量的值相加并赋给`a`。
B选项`p1=a;`是非法的,因为`p1`是一个指针,而`a`是一个整数,不能将整数赋值给指针。
C选项`p1=p2;`是合法的,允许指针之间的赋值。
D选项`a=*p1*(*p2);`也是合法的,它将两个指针所指向的变量的值相乘并赋给`a`。
4. 变量的指针含义:
变量的指针是指该变量的地址,而非其值、名字或标志。因此,正确答案是B。
5. 从键盘读取整数:
使用`scanf()`函数读取变量的值时,必须传递变量的地址。因此,正确读取`a`、`b`、`c`的语句是C选项`scanf("%d%d%d", &a, &b, &c);`。
6. 指针变量的声明与赋值:
语句(1)`int *p = &a;`声明了一个指向整型变量的指针`p`,并将其初始化为`a`的地址。语句(2)`*p = a;`将`a`的值赋给`p`所指向的变量。因此,正确解释是D选项。
7. 地址相关的表达式:
A选项中`a`是变量名,不是地址;B选项`&*a`是错误的,因为`*a`已经解引用了,不是地址;C选项中`*&p`是错误的,`*p`是`p`所指向的变量的值。只有D选项`&a, &*p, p`全部代表地址,其中`&a`是`a`的地址,`&*p`是`p`所指向的变量的地址(等同于`a`的地址),`p`是`a`的地址的别名。
8. 建立存储结构:
如果需要建立如图所示的存储结构,并已定义`double *p, x=0.2345;`,正确的赋值语句是B选项`p = &x;`,这使得`p`指向`x`的地址。
9. 正确的指针操作:
在C语言中,指针需要先被初始化为某个变量的地址,然后才能通过`*p`访问或修改其指向的变量。正确的程序段是A选项`p = &b;`,这将`p`设置为指向`b`的地址,后续可以使用`*p`来访问或修改`b`的值。
通过这些习题,学习者可以掌握指针的基本用法,包括指针的声明、赋值、解引用以及通过指针访问和修改变量的值。此外,还需要理解指针作为地址的概念,以及如何使用指针进行内存操作。
2021-09-30 上传
2021-09-30 上传
2021-09-30 上传
2021-09-30 上传
2021-12-06 上传
2014-03-05 上传
2021-09-30 上传
2021-10-11 上传
2021-09-30 上传
筱筱笎琞
- 粉丝: 10
- 资源: 15万+
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍